/ / Como adicionar texto após div usando Nokogiri - ruby-on-rails, ruby, nokogiri

Como adicionar texto após div usando Nokogiri - ruby-on-rails, ruby, nokogiri

Eu estou tentando adicionar uma linha de texto após um h3 tag.

Meu HTML inicial é este:

<h3>hi</h3>

sem outras tags ou tipos de documentos. Eu quero que meu final HTML seja assim:

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

Eu tentei o seguinte:

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)

Respostas:

-2 para resposta № 1

Você está dificultando muito:

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" %}

De volta ao seu código ...

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

está errado. Você pode testar isso facilmente usando:

page.to_html # => "my_page.html"

Dentro a documentação, quando diz "tags"significa que você tem que passar em algum HTML ou XML:

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

Eu recomendo estudar como HTML e XML sãoestruturado porque seus experimentos sugerem que você não entende a ideia dos nós de um documento analisado, seus tipos possíveis e seus filhos e irmãos. Os tutoriais da Nokogiri ajudarão, assim como procuraremos a tag aqui no SO e leremos as várias perguntas e respostas. O Nokogiri é poderoso e fácil de usar quando você coloca esse conceito em prática.