我在rails项目的一个视图中有一些简单的erb代码。
<%= comment.body %>
我想保留comment.body中的html标签,因为它们有格式化信息。我已经验证了文本是否正确保存在数据库中
<b>hello</b>
然而,正如我所料,它在页面上显示为<b>hello</b>
而非 hello 。
怎么会这样?我没有使用<%= h
来逃避HTML代码。
如何让它逃脱?我正在使用rails 3.这有关系吗?
答案 0 :(得分:4)
您也可以使用清洁。
<%= sanitize(comment.body) %>
sanitize将保留html代码,但转义为javascript。
答案 1 :(得分:2)
Rails 3现在会自动转义输出。
要取消文本并使用实际标记,请使用raw(...)
:
<%= raw(comment.body) %>
但是,请注意这一点,因为它将允许任何标记,包括脚本(可能是恶意的)。更安全的选择可能是让用户使用markdown格式的文本或类似的东西,而不是允许原始HTML标记。