首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails -输出内容,sanitize还是<%=h?

Rails -输出内容,sanitize还是<%=h?
EN

Stack Overflow用户
提问于 2011-01-14 08:01:31
回答 3查看 2K关注 0票数 3

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

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

代码语言:javascript
复制
<%= sanitize content.desc %>

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

有没有一个明确的指南可以让我在输出内容时看到所有的选项?我试着搜索,但没有找到任何东西(rails newb,我知道)。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-14 08:06:02

在Rails3中,默认情况下,任何没有标记为“安全”的字符串都将是超文本标记语言转义的。一些方法,如sanitizehlink_to和许多其他帮助程序都会返回安全字符串,因此可以按字面意思编写它们。有关详细信息,请参阅this blog post

如果您确信@content.desc中包含的超文本标记语言是安全的,那么您可以像这样自己标记它:<%= @content.desc.html_safe %>

票数 5
EN

Stack Overflow用户

发布于 2011-01-14 08:10:55

Rails3已经将HTML清理更改为默认启用。如果您确定要呈现的字符串是安全的,则可以使用

<%= @content.desc.html_safe! %>

票数 2
EN

Stack Overflow用户

发布于 2011-01-14 08:05:11

除非我错了,否则您不应该在显示内容之前对其进行消毒,因为在默认情况下,Rails3会这样做。更多信息请点击此处:http://yehudakatz.com/2010/02/01/safebuffers-and-rails-3-0/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4686716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档