/ / Come aggiungere testo dopo il div usando Nokogiri - ruby-on-rails, ruby, nokogiri

Come aggiungere testo dopo div usando Nokogiri - ruby-on-rails, ruby, nokogiri

Sto cercando di aggiungere una riga di testo dopo un h3 etichetta.

Il mio HTML iniziale è questo:

<h3>hi</h3>

senza altri tag o tipi di documenti. Voglio che il mio HTML finale sia simile al seguente:

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

Ho provato il seguente:

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)

risposte:

-2 per risposta № 1

Lo stai rendendo troppo difficile:

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

Torna al tuo codice ...

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

è sbagliato. Puoi testarlo facilmente usando:

page.to_html # => "my_page.html"

In la documentazione, quando dice "tags"significa che devi passare un po 'di HTML o XML:

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

Consiglio di studiare come sono HTML e XMLstrutturato perché i tuoi esperimenti suggeriscono che non capisci l'idea dei nodi di un documento analizzato, dei loro possibili tipi, dei loro figli e fratelli. I tutorial di Nokogiri ti aiuteranno, così come la ricerca del tag qui su SO e la lettura delle varie domande e risposte. Nokogiri è potente e facile da usare una volta che avrai questo concetto sotto controllo.