2010-11-14 40 views
2

如何禁用Rails3中HTML標記的自動轉換?我在一些控制器視圖中輸出。例如,我有方法至極輸出簡單的HTML鏈接集..Rails3:如何禁用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;

哪有我禁用它?

回答

3

我沒有使用過Rails3所以沒有保證。但看起來這與你的方法返回一個列表的事實有關。

Rails通常會格式化內部數據結構以供輸出,方法是轉義特殊字符並顯示html轉義的數據解釋。

嘗試套結一個。加入到你的地圖通話結束時返回一個字符串

[:en, :de].map{ |locale| 
    link_to locate.to_s.upcase , { :locale => locate } 
    ... 
}.join("<br/>") 

而且rwilliams又名R-配音的建議,使用原料可能是必要除了這個代碼。但是可能會因爲內部調用to_string而給您帶來不良結果。這是一個隱式連接(「」)。因此除了返回一個字符串之外,還要將raw添加到方法調用中。

<%= raw my_method %> 
+0

如果您爲此投票,也可以爲rwilliams aka-dub的解決方案投票贊成。他/她關於raw的觀點解決了問題中所描述的根本問題的大部分問題。 – EmFi 2010-11-14 16:06:18

3

如果您確定您的方法輸出是安全的,那麼您可以使用raw方法。

<%= raw my_method %>