rails 3.0 查看助手返回的字符串
Posted
技术标签:
【中文标题】rails 3.0 查看助手返回的字符串【英文标题】:rails 3.0 view helper returned string 【发布时间】:2012-11-26 09:18:58 【问题描述】:感谢您的宝贵时间!
我是 Rails 新手,对 view helper
有点困惑。
我在helpers/application_helper.rb
中定义了一个函数。
def error_table()
return %<table>...</table>
end
我在show.html.erb
中调用了error_table
函数。
<%= error_table() %>
但是当我查看这个页面时,它给了我这个字符串&lt;table&gt;...&lt;/table&gt;
。
我查看了 html 源代码,它看起来像这样:&lt;table&gt;...&lt;/table&gt;
我想将此表插入到 html 页面而不是显示它。我该怎么办?
【问题讨论】:
【参考方案1】:默认情况下,Rails 对所有呈现的字符串进行 HTML 转义,这样就不会发生 XSS 攻击。
因此,在您的情况下,您必须在字符串上调用 .html_safe
以将其标记为“安全”HTML,并且它不会被转义,或者将其传递给执行相同但不会的 raw()
助手t 对 nil 对象吠叫。 (I wrote about this平庸前段时间)
在您的情况下,我建议您将该代码放在帮助程序中:
def error_table()
return %<table>...</table>.html_safe
end
或者
def error_table()
return raw(%<table>...</table>)
end
这样您就不必在每个呼叫站点都这样做
【讨论】:
【参考方案2】:试试这个:
<%=raw error_table() %>
在 Rails 3.0 之后, 默认转义 HTML。
【讨论】:
以上是关于rails 3.0 查看助手返回的字符串的主要内容,如果未能解决你的问题,请参考以下文章
Rails:在 link_to 中保留 GET 查询字符串参数