【问题标题】:How to make html code in erb tag not escaped如何使erb标签中的html代码不转义
【发布时间】:2011-06-16 04:26:55
【问题描述】:

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

<%= comment.body %>

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

<b>hello</b>

然而页面上的结果是<b>hello</b> 而不是我期望的hello

这怎么可能?我没有使用<%= h 来转义html 代码。

如何让它不逃逸?我正在使用rails 3。这有关系吗?

【问题讨论】:

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


【解决方案1】:

您也可以使用消毒。

<%= sanitize(comment.body) %>

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

【讨论】:

    【解决方案2】:

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

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

    <%= raw(comment.body) %>
    

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

    【讨论】:

    • 感谢您的明确回答和额外有用的信息。我尝试了 tinymce 锤子插件,它过滤掉了
    猜你喜欢
    • 2011-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多