我最近做了一个小的rails3应用程序来转换用另一种语言编写的旧cms。在迁移内容之后,我在从数据库输出内容时遇到了问题。
@content.desc字段有时包含html。目前,我能让它工作的唯一方法是:
<%= sanitize content.desc %>但这是最好的方法吗?当我使用<%=h @content.desc %>时,我仍然可以看到html标签。当我使用<%= simple_format @content.desc %>时,我得到了非常糟糕的间距。
有没有一个明确的指南可以让我在输出内容时看到所有的选项?我试着搜索,但没有找到任何东西(rails newb,我知道)。
发布于 2011-01-14 08:06:02
在Rails3中,默认情况下,任何没有标记为“安全”的字符串都将是超文本标记语言转义的。一些方法,如sanitize、h、link_to和许多其他帮助程序都会返回安全字符串,因此可以按字面意思编写它们。有关详细信息,请参阅this blog post。
如果您确信@content.desc中包含的超文本标记语言是安全的,那么您可以像这样自己标记它:<%= @content.desc.html_safe %>。
发布于 2011-01-14 08:10:55
Rails3已经将HTML清理更改为默认启用。如果您确定要呈现的字符串是安全的,则可以使用
<%= @content.desc.html_safe! %>
发布于 2011-01-14 08:05:11
除非我错了,否则您不应该在显示内容之前对其进行消毒,因为在默认情况下,Rails3会这样做。更多信息请点击此处:http://yehudakatz.com/2010/02/01/safebuffers-and-rails-3-0/
https://stackoverflow.com/questions/4686716
复制相似问题