【问题标题】:Rails How to escape and display the contents of a rendered viewRails 如何转义和显示渲染视图的内容
【发布时间】:2010-10-25 21:08:30
【问题描述】:

我正在尝试在文本区域中显示 Rails 视图文件。视图文件包含一堆 HTML,我想将其转义,以免干扰页面 html。这是一个例子:

In this view we are going to display the contents of a partial
<textarea>
<%= html_escape render('partial') %>
</textarea>

并且在 partial.html.erb 我会拥有

Hello this is partial.html.erb and this is a 
<textarea>textarea</textarea>  blah blah blah.

问题是:partial.html 中的 textarea 破坏了第一个视图中的 textarea,因为它没有被 html_escaped。如何在 textarea 中进行属性转义并显示部分内容?

【问题讨论】:

    标签: html ruby-on-rails ruby ruby-on-rails-3 views


    【解决方案1】:

    你尝试过使用

    <%= CGI.escapeHTML render('partial') %>
    

    【讨论】:

    • 刚刚发现这个:,这能解决吗?您也可以尝试将 CGI.escapeHTML 与 render_to_string 一起使用。
    【解决方案2】:

    在您的控制器中尝试render_to_string,然后在结果字符串上使用html_escape

    【讨论】:

    • 不行,还是不行。 html_escape 无法转义 render_to_string 返回的内容
    【解决方案3】:

    好的 - 我想通了。您基本上必须调用两次渲染。第一次是渲染文件,第二次是转义渲染的文件。这太丑了!

    <%= render :text => render("partial") %>
    

    我很想看看是否还有其他人有任何其他方法可以逃避 partial.html。

    【讨论】:

      【解决方案4】:

      你好 我看到这是很久以前的事了,但我建议在这里: ...清理instance.yourtext %> 我在 S.Ruby、D.Thomas 和 D.Hansson 的“使用 Ruby on Rails 进行敏捷网页设计”中找到了“清理”助手。 希望对你有帮助...

      【讨论】:

        【解决方案5】:

        已编辑 默认情况下,在 Rails 中, text_area 会转义 HTML 以避免恶意脚本嵌入。使用表单助手创建您的 &lt;textarea&gt;

        <%= f.text_area :model_attribute %>
        

        注意:如果您需要在文本区域中查看原始 HTML,只需包含 :escape 参数并将值设置为 false 以禁用 HTML 转义。

        <%= f.text_area :model_attribute, escape: false %>
        

        引用:http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-text_area_tag

        如果使用此功能,如果来源不受信任或不向公众开放,我建议从提交的值中验证或消除脚本标签。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多