谢谢你的时间!
我是Rails的新手,对view helper
感到有些困惑。
我在helpers/application_helper.rb
中定义了一个函数。
def error_table()
return %{<table>...</table>}
end
我在error_table
中调用了show.html.erb
函数。
<%= error_table() %>
但是当我查看此页面时,它会给我这个字符串<table>...</table>
。
我查看了html源代码,它看起来像这样:<table>...</table>
我想将此表插入到html页面而不是显示它。我该怎么办?
答案 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。