我最近制作了一个小型rails3应用程序来转换用另一种语言编写的旧cms。迁移内容后,我在从数据库输出内容时遇到问题。
@ content.desc字段有时会有html。目前我能让它发挥作用的唯一方法是:
<%= sanitize content.desc %>
但这是最好的方法吗?当我使用<%=h @content.desc %>
时,我仍然可以看到html标签。当我使用<%= simple_format @content.desc %>
时,我会得到邪恶的间距。
在输出内容时我能看到所有选项的某个权威指南吗?我已经尝试过搜索,但无法解决任何问题(rails newb,我知道)。
答案 0 :(得分:5)
默认情况下,任何未标记为“安全”的字符串都将在Rails 3中进行HTML转义。某些方法(例如sanitize
,h
,link_to
和许多其他帮助程序将返回安全字符串,从而允许它们按字面编写。有关详细信息,请参阅this blog post。
如果您确定@content.desc
中包含的HTML是安全的,您可以这样标记:<%= @content.desc.html_safe %>
。
答案 1 :(得分:2)
Rails 3已将HTML清理更改为默认启用。如果您确定您正在呈现的字符串是安全的,则可以使用
<%= @content.desc.html_safe! %>
答案 2 :(得分:0)
除非我弄错了,否则你不必在显示之前清理内容,因为Rails 3在默认情况下会这样做。更多信息:http://yehudakatz.com/2010/02/01/safebuffers-and-rails-3-0/