/ / Jak dodać tekst po div za pomocą Nokogiri - ruby-on-rails, ruby, nokogiri

Jak dodać tekst po div używając Nokogiri - ruby-on-rails, ruby, nokogiri

Próbuję dodać wiersz tekstu po pliku h3 etykietka.

Mój początkowy kod HTML to:

<h3>hi</h3>

bez innych tagów ani typów dokumentów. Chcę, aby mój końcowy kod HTML wyglądał następująco:

<h3>hi</h3>
{% include "tester-credit-button" %}

Próbowałem następujące:

page = Nokogiri::HTML::DocumentFragment.parse("my_page.html")
title = page.at_css("h3")
#tried this first
title.children.after("n{% include "tester-credit-button" %}")

#then this
title << "n{% include "tester-credit-button" %}"

#then this
title.after("n{% include "tester-credit-button" %}")

#then this
text_node = Nokogiri::XML::Text.new("n{% include "tester-credit-button" %}"
, page)
title.add_child(text_node)

Odpowiedzi:

-2 dla odpowiedzi № 1

Sprawiasz, że jest to zbyt trudne:

require "nokogiri"
doc = Nokogiri::HTML::DocumentFragment.parse("<h3>hi</h3>")
doc.at("h3").next = "n{% include "tester-credit-button" %}"
puts doc.to_html

# >> <h3>hi</h3>
# >> {% include "tester-credit-button" %}

Wróć do twojego kodu ...

page = Nokogiri::HTML::DocumentFragment.parse("my_page.html")

jest źle. Możesz to łatwo sprawdzić za pomocą:

page.to_html # => "my_page.html"

W dokumentacja, kiedy jest napisane „tags"oznacza to, że musisz przekazać trochę HTML lub XML:

page = Nokogiri::HTML::DocumentFragment.parse("<p><span>foo</span></p>")
page.to_html # => "<p><span>foo</span></p>"

Polecam przestudiować, czym są HTML i XMLustrukturyzowany, ponieważ Twoje eksperymenty sugerują, że nie rozumiesz idei węzłów przeanalizowanych dokumentów, ich możliwych typów oraz ich dzieci i rodzeństwa. Pomogą w tym samouczki Nokogiri, podobnie jak wyszukiwanie tagu w SO oraz czytanie różnych pytań i odpowiedzi. Nokogiri jest potężny i łatwy w użyciu, gdy już opanujesz tę koncepcję.