0

我从一个 XML 文件中提取数据,该文件以双重编码的 HTML 形式出现,我可以使用rawhString.html_safe. 将这些方法中的任何一个加倍似乎都不会进一步解码,因此当我在视图中打印字符串时,它会呈现为编码的 HTML。

例如,我可能会得到字符串:

@paragraph = <p>This is a Paragraph.</p>

当我打印时,<%= @paragraph %>我会&lt;p&gt;This is a Paragraph.&lt;/p&gt;显示在我的浏览器中。打印<%= raw @paragraph %>渲染<p>This is a Paragraph.</p>

到目前为止,正如预期的那样。但是现在当我再次尝试解码时:<%= raw (raw @paragraph) %>我得到<p>This is a Paragraph.</p>. 无论我调用多少次raw或其他两种方法中的任何一种,我都会继续获得编码的 HTML。

我正在寻找的当然是:

这是一个段落。

4

1 回答 1

3

使用 CGI.escapeHTML/CGI.unescapeHTML

 irb(main):043:0> CGI.escapeHTML "<p>This is a Paragraph.</p>"
 => "&lt;p&gt;This is a Paragraph.&lt;/p&gt;"

 irb(main):090:0> CGI.unescapeHTML "&lt;p&gt;This is a Paragraph.&lt;/p&gt;"
 => "<p>This is a Paragraph.</p>"

您可能还想查看http://api.rubyonrails.org/classes/ActionView/Helpers/SanitizeHelper.html#method-i-strip_tags以删除 html 标签

于 2013-04-19T06:01:24.367 回答