Rails 3不会将HTML呈现为标记

时间:2011-01-11 19:26:48

标签: html activerecord ruby-on-rails-3

我提交了一个表单,在SQL数据库表中创建单行,作为博客条目:

<p>This is a paragraph.</p>

结果,当我通过Rails的ActiveRecord查询显示时,它呈现如下:

<p>This is a paragraph.</p>

这是代码,当我在浏览器中查看源代码时:

&lt;p&gt;This is a paragraph.&lt;/p&gt;

我该如何解决这个问题?或者我只需要通过Javascript转换&lt; &gt;

谢谢:)

1 个答案:

答案 0 :(得分:7)

正在发生的是该字符串正在进行HTML转义。

您可以使用html_safe在呈现时不转义字符串。 例如,<%= post.paragraph.html_safe %>

但是,当然,如果您允许表单首先存储(不受限制的)HTML,那么不推荐,它可能包含恶意JavaScript(例如,用于XSS)。毋庸置疑,这是非常糟糕的做法。

重要提示在对任何HTML使用html_safe之前,应确保HTML包含允许的HTML标记的白名单。此外,您可能希望在保存表单内容时强制执行白名单(请注意,在保存时强制执行白名单不能替代以在显示内容时强制执行白名单!)。

您可能希望从此StackOverflow's own "rules"开始。