如何在Rails3中禁用HTML标记的自动转换?我在某些控制器视图中输出。例如,我有输出简单HTML链接集的方法..
[:en, :de].map{ |locale| link_to locate.to_s.upcase , { :locale => locate } ...
在视图中我正在调用我的方法<%= my_method %>
结果我得到了这个:
| <a href="/login?class=language_selected&amp;locale=en">EN</a>
如何禁用它?
答案 0 :(得分:3)
如果您确定您的方法输出是安全的,那么您可以使用raw方法。
<%= raw my_method %>
答案 1 :(得分:3)
我没有使用过Rails3所以没有保证。但看起来这与你的方法返回一个列表的事实有关。
Rails通常会通过转义特殊字符并显示数据的html转义解释来格式化输出的内部数据结构。
尝试在地图调用结束时添加.join以返回字符串
[:en, :de].map{ |locale|
link_to locate.to_s.upcase , { :locale => locate }
...
}.join("<br/>")
另外rwilliams又名r-dub建议使用raw可能是此代码的必要补充。然而,在列表上生成可能会因为内部to_string
调用而给您带来不良后果。这是一个隐式连接(“”)。因此,除了返回字符串外,还要将raw添加到方法调用中。
<%= raw my_method %>