Rails3:如何禁用HTML标签的自动转换?

时间:2010-11-14 15:28:49

标签: ruby-on-rails-3

如何在Rails3中禁用HTML标记的自动转换?我在某些控制器视图中输出。例如,我有输出简单HTML链接集的方法..

[:en, :de].map{ |locale| link_to locate.to_s.upcase , { :locale => locate } ...

在视图中我正在调用我的方法<%= my_method %>

结果我得到了这个: | &lt;a href=&quot;/login?class=language_selected&amp;amp;locale=en&quot;&gt;EN&lt;/a&gt;

如何禁用它?

2 个答案:

答案 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 %>