Rails如何转义和显示渲染视图的内容

时间:2010-10-25 21:08:30

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

我正在尝试在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中显示部分内容?

5 个答案:

答案 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

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