2010-11-14 2 views
2

Как отключить автоматическое преобразование HTML-тегов в Rails3? У меня есть выход в виде контроллера. Например, у меня есть метод Wich выходов простой набор 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-экранированной интерпретации ваших данных.

Попробуйте лавировать .join на конец вашей карте вызова возвращает строку

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

rwilliams Также предложение AKA R-DUB, чтобы использовать сырье, вероятно, будет необходимым дополнением к этому коду. raw в списке, однако может дать вам нежелательный результат, вероятно, из-за внутреннего вызова to_string. Это неявное соединение (""). Поэтому добавьте raw в вызов метода в дополнение к возврату строки.

<%= raw my_method %> 
+0

Если вы голосуете за это, также бросайте надпись для решения rwilliams aka-dub. Его/ее пункт о сырых адресах охватывает большую часть проблемы с корнем, описанную в вопросе. – EmFi

3

Если вы уверены, что ваш выход методов безопасен, вы можете использовать метод raw.

<%= raw my_method %> 
Смежные вопросы