rails 3.0视图助手返回的字符串

时间:2012-11-26 09:18:59

标签: ruby-on-rails view helper

谢谢你的时间!

我是Rails的新手,对view helper感到有些困惑。

我在helpers/application_helper.rb中定义了一个函数。

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

我在error_table中调用了show.html.erb函数。

<%= error_table() %>

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

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

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

2 个答案:

答案 0 :(得分:3)

默认情况下,

Rails HTML-Escapes所有呈现的字符串,以便不会发生XSS攻击。

因此,在您的情况下,您必须在字符串上调用.html_safe以将其标记为“安全”HTML并且不会被转义,或者将其传递给执行该操作的raw()帮助程序相同但不会在零物体上吠叫。 (前一段时间I wrote about this平庸)

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

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

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

这样您就不必在每个呼叫站点上执行此操作

答案 1 :(得分:1)

试试这个:

<%=raw error_table() %>

在Rails 3.0之后,&lt;%=%&gt;默认情况下转义HTML。