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() %>

但是当我查看这个页面时,它给了我这个字符串&amp;lt;table&amp;gt;...&amp;lt;/table&amp;gt;

我查看了 html 源代码,它看起来像这样:&amp;lt;table&amp;gt;...&amp;lt;/table&amp;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 文章助手 - “a” 或 “an”

Rails - 如何向 url 助手添加格式?

Rails:在 link_to 中保留 GET 查询字符串参数

spring 3.0 @ResponseBody注解返回中文问号乱码解决办法

系统的助手函数

实现 Rails 视图助手