我正在尝试在textarea中显示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中显示部分内容?
答案 0 :(得分:5)
您尝试使用
吗?<%= CGI.escapeHTML render('partial') %>
答案 1 :(得分:1)
在控制器中尝试render_to_string
,然后在结果字符串上使用html_escape
。
答案 2 :(得分:0)
好的 - 我明白了。你基本上必须调用渲染两次。第一次是渲染文件,第二次是转义渲染文件。这太丑了!
<%= render :text => render("partial") %>
我有兴趣看看是否还有其他人有办法逃避partial.html。
答案 3 :(得分:0)
您好 我看到它很久以前,但在这里我建议: ... sanitize instance.yourtext%&gt; 我在S.Ruby,D.Thomas和D.Hansson的“使用Ruby on Rails进行的敏捷网页设计”中找到了“清理”帮助器。 希望它有所帮助...
答案 4 :(得分:0)
EDITED
默认情况下,在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
如果使用此功能,我建议如果来源不受信任或向公众开放,则从提交的值中验证或删除脚本标记。