Rails 如何转义和显示渲染视图的内容
Posted
技术标签:
【中文标题】Rails 如何转义和显示渲染视图的内容【英文标题】:Rails How to escape and display the contents of a rendered view 【发布时间】: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 中进行属性转义并显示部分内容?
【问题讨论】:
【参考方案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 以避免恶意脚本嵌入。使用表单助手创建您的 <textarea>
<%= 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
如果使用此功能,如果来源不受信任或不向公众开放,我建议从提交的值中验证或消除脚本标签。
【讨论】:
以上是关于Rails 如何转义和显示渲染视图的内容的主要内容,如果未能解决你的问题,请参考以下文章