Предотвращение Нокогири от побега персонажей? - PullRequest
7 голосов
/ 15 июля 2010

Я создал текстовый узел и вставил в свой документ так:

#<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?

Спасибо!

Ответы [ 2 ]

10 голосов
/ 10 марта 2011

Возможно, вы хотите использовать метод "<<" </a> для вставки необработанного 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
7 голосов
/ 18 июля 2010

Вы обязаны экранировать некоторые символы в текстовых элементах, таких как:

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

Если вы хотите, чтобы ваш текст дословно использовал раздел CDATA, так как все внутри раздела CDATA игнорируется анализатором.

Пример Нокогири:

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-теги без изменений!

...