2010-07-15 19 views
7

Ich habe einen Textknoten und eingefügt in mein Dokument wie so erstellt:Verhindern, dass Nokogiri Charaktere entkommen?

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

Wenn ich versuche, das Dokument mit diesem zu speichern:

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

ich dies in dem Dokument selbst erhalten:

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

Gibt es eine Möglichkeit, das Escaping zu deaktivieren und meine Seite mit meinen erb-Tags intakt zu speichern?

Danke!

Antwort

7

Sie sind verpflichtet, wie einige Zeichen in Textelemente zu entkommen:

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

Wenn Sie Ihren Text wörtlich einen CDATA-Abschnitt, da alles verwenden möchten innerhalb eines CDATA-Abschnitt durch den Parser ignoriert.

Nokogiri Beispiel:

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 

Dies sollten Sie erb-Tags intakt halten!

+0

Sweet! Danke Fotos! – mikewilliamson

10

Vielleicht möchten Sie die "<<" method verwenden XML-Rohdaten wie folgt einzufügen:

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

Danke, was ich brauchte! –

Verwandte Themen