Rails - 输出内容,消毒或<%= h?

jyo*_*eph 3 ruby-on-rails sanitize

我最近制作了一个小型rails3应用程序来转换用另一种语言编写的旧cms.迁移内容后,我在从数据库输出内容时遇到问题.

@ content.desc字段有时会有html.目前我能让它工作的唯一方法是:

<%= sanitize content.desc %>
Run Code Online (Sandbox Code Playgroud)

但这是最好的方法吗?当我使用时,<%=h @content.desc %>我仍然可以看到html标签.当我使用时,<%= simple_format @content.desc %>我得到了邪恶的间距.

在输出内容的同时,我可以看到所有选项的权威指南吗?我试图搜索,但无法改变任何东西(rails newb,我知道).

Bri*_*van 5

任何字符串没有标记为"安全"将是HTML转义默认情况下,Rails的3.一些方法,如sanitize,h,link_to和许多其他助手返回安全字符串,从而使他们从字面上写的.有关详细信息,请参阅此博客文章.

如果您确定所包含的HTML @content.desc是安全的,您可以像下面这样标记它:<%= @content.desc.html_safe %>.