0

谢谢你的时间!

我是 Rails 新手,对view helper.

我在helpers/application_helper.rb.

def error_table()
  return %{<table>...</table>}
end

error_tableshow.html.erb.

<%= error_table() %>

但是当我查看这个页面时,它给了我这个字符串<table>...</table>

我查看了 html 源代码,它看起来像这样:&lt;table&gt;...&lt;/table&gt;

我想将此表插入到 html 页面而不是显示它。我该怎么办?

4

2 回答 2

3

默认情况下,Rails 对所有呈现的字符串进行 HTML 转义,这样就不会发生 XSS 攻击。

因此,在您的情况下,您必须调用.html_safe字符串以将其标记为“安全”HTML,并且它不会被转义,或者将其传递给raw()执行相同操作但不会对 nil 对象吠叫的助手。(我前段时间写过这种平庸)

在您的情况下,我建议您将该代码放入帮助程序中:

def error_table()
  return %{<table>...</table>}.html_safe
end

或者

def error_table()
  return raw(%{<table>...</table>})
end

这样您就不必在每个呼叫站点上都这样做

于 2012-11-26T09:21:07.000 回答
1

试试这个:

<%=raw error_table() %>

在 Rails 3.0 之后,<%= %> 默认转义 HTML。

于 2012-11-26T09:20:57.380 回答