我提交了一个表单,在SQL数据库表中创建单行,作为博客条目:
<p>This is a paragraph.</p>
结果,当我通过Rails的ActiveRecord查询显示时,它呈现如下:
<p>This is a paragraph.</p>
这是代码,当我在浏览器中查看源代码时:
<p>This is a paragraph.</p>
我该如何解决这个问题?或者我只需要通过Javascript转换&lt; 和&gt; ?
谢谢:)
答案 0 :(得分:7)
正在发生的是该字符串正在进行HTML转义。
您可以使用html_safe
在呈现时不转义字符串。
例如,<%= post.paragraph.html_safe %>
。
但是,当然,如果您允许表单首先存储(不受限制的)HTML,那么不推荐,它可能包含恶意JavaScript(例如,用于XSS)。毋庸置疑,这是非常糟糕的做法。
重要提示在对任何HTML使用html_safe
之前,应确保HTML包含允许的HTML标记的白名单。此外,您可能希望在保存表单内容时强制执行白名单(请注意,在保存时强制执行白名单不能替代以在显示内容时强制执行白名单!)。
您可能希望从此StackOverflow's own "rules"开始。