1

我在 rails 项目的一个视图中有一些简单的 erb 代码。

<%= comment.body %>

我希望保留 comment.body 中的 html 标签,因为它们具有格式信息。我已验证文本已正确保存在数据库中,例如

<b>hello</b>

然而,事实证明页面上<b>hello</b>并不像我预期的那样打招呼。

这怎么可能?我不是<%= h用来转义 html 代码的。

我怎样才能让它不逃跑?我正在使用rails 3。这有关系吗?

4

2 回答 2

5

您也可以使用消毒。

<%= sanitize(comment.body) %>

sanitize 将留下 html 代码但转义 javascript。

于 2011-06-16T05:22:37.993 回答
2

Rails 3 现在会自动转义您的输出。

要取消转义文本并使用实际标签,请使用raw(...)

<%= raw(comment.body) %>

但是,请注意这一点,因为它将允许任何标签,包括脚本(可能是恶意的)。一个更安全的选择可能是让用户使用降价格式的文本或类似的东西,而不是允许使用原始 HTML 标记。

于 2011-06-16T04:40:47.557 回答