2010-07-15 1 views
7

Ho creato un nodo di testo e inserito nel mio documento in questo modo:Impedire a Nokogiri di sfuggire ai personaggi?

#<Nokogiri::XML::Text:0x3fcce081481c "<%= stylesheet_link_tag 'style'%>">]> 

Quando provo a salvare il documento con questo:

File.open('ng.html', 'w+'){|f| f << page.to_html} 

ottengo questo nel documento vero e proprio:

&lt;%= stylesheet_link_tag 'style'%&gt; 

C'è un modo per disabilitare l'escaping e salvare la mia pagina con i miei tag erb intatti?

Grazie!

risposta

7

Siete obbligati a fuggire alcuni personaggi di elementi di testo come:

" &quot; 
' &apos; 
< &lt; 
> &gt; 
& &amp; 

Se si desidera che il testo parola per parola usa una sezione CDATA perché tutto all'interno di una sezione CDATA viene ignorato dal parser.

Nokogiri esempio:

builder = Nokogiri::HTML::Builder.new do |b| 
    b.html do 
    b.head do 
     b.cdata "<%= stylesheet_link_tag 'style'%>" 
    end 
    end 
end 
builder.to_html 

Questo dovrebbe tenervi tag erb intatto!

+0

dolce! Grazie alle foto! – mikewilliamson

10

Forse si desidera utilizzare il "<<" method per inserire XML grezzo come questo:

builder = Nokogiri::XML::Builder.new do |b| 
    b.html do 
    b.head do 
     b << stylesheet_link_tag 'style' 
    end 
    end 
end 
builder.to_xml 
+0

Grazie proprio quello di cui avevo bisogno! –