如何使erb标签中的html代码不被转义

时间:2011-06-16 04:26:56

标签: ruby-on-rails-3 erb html-escape

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

<%= comment.body %>

我想保留comment.body中的html标签,因为它们有格式化信息。我已经验证了文本是否正确保存在数据库中

<b>hello</b>

然而,正如我所料,它在页面上显示为<b>hello</b>而非 hello

怎么会这样?我没有使用<%= h来逃避HTML代码。

如何让它逃脱?我正在使用rails 3.这有关系吗?

2 个答案:

答案 0 :(得分:4)

您也可以使用清洁。

<%= sanitize(comment.body) %>

sanitize将保留html代码,但转义为javascript。

答案 1 :(得分:2)

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

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

<%= raw(comment.body) %>

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