2017-02-02 1 views
-1

Ich suche ein <div> Element nach seinem Klassennamen und möchte es neben anderen <div> Element hinzufügen. Der folgende Code schreibt keine Daten, die ich mit doc1.search bekomme.Ruby - nicht mit Nokogiri schreiben

require 'nokogiri' 

doc1 = Nokogiri::HTML(File.open("overview.html")) 
affixButtons = doc1.search('div.margin-0-top-lg.margin-10-bottom-lg.text-center') 
doc1.at('div.leftnav-btn').add_next_sibling(affixButtons) 

Kann jemand vorschlagen, was ich vermisse?

+0

Ich lief Ihren genauen Code und es funktionierte gut für mich .. Können Sie bitte ausarbeiten, wo Sie stecken bleiben? Ich schaffte es, das div vom Anfang des Codes nach dem 'leftnav-btn'-div zu verschieben. –

+0

Wählen die css-Selektoren die richtigen Elemente aus? Sie können sie mit etwas wie puts (affixButtons) drucken, um sicherzustellen, dass. –

+0

@ Z-Bone Nach dem Ausführen dieses Codes overview.html Seite wird nicht geändert. Ich kann keine Änderungen sehen. –

Antwort

0

Sie sind nicht das Speichern Ihrer HTML resultierenden Datei können Sie es tun, wie also:

File.open("result.html", "w"){|f| f.write(doc1.to_html)} 
+0

Sie können es einfacher schreiben mit 'File.write (" result.html ", doc1.to_html)'. –

2

Ihr Code funktioniert gut, wenn Sie nur die bearbeiteten Daten schreiben möchte Verwendung File.open Datei wie folgt:

require 'nokogiri' 

doc1 = Nokogiri::HTML(File.open("overview.html")) 
affixButtons = doc1.search('div.margin-0-top-lg.margin-10-bottom-lg.text-center') 
doc1.at('div.leftnav-btn').add_next_sibling(affixButtons) 

File.open('output.html', 'w') {|f| f.write(doc1.to_html)} 
+0

Sie können es einfacher schreiben mit 'File.write ('output.html', doc1.to_html)'. –