2010-07-15 84 views
7

我創建了一個文本節點並插入到我的文檔,像這樣:防止Nokogiri逃離角色?

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

當我嘗試將文檔保存與此:

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

我實際的文件中得到這樣的:

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

有沒有辦法禁用轉義和保存我的網頁與我的erb標籤完好?

謝謝!

回答

7

你有義務逃避文本元素一些字符,如:如果你想讓你的文字逐字使用CDATA節,因爲這裏的一切都CDATA節被分析器忽略

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

引入nokogiri例如:

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 

這應該讓你的erb標籤完好!

+0

甜!謝謝fotos! – mikewilliamson 2010-07-19 11:31:17

10

也許你想使用"<<" method插入原始XML這樣的:

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

感謝我所需要的! – 2012-10-16 06:08:53