Rails 3不会将HTML呈现为标记

how*_*wdy 3 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 转换<>

谢谢 :)

Zab*_*bba 7

发生的事情是字符串被HTML转义.

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

但是,当然,如果您允许表单首先存储(不受限制的)HTML,则不建议这样做,它可能包含例如恶意JavaScript(例如,用于XSS).不用说,这是非常糟糕的做法.

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

您可能希望通过此StackOverflow自己的"规则"开始.