Rails3: как отключить автоматическое преобразование тегов HTML? - PullRequest
2 голосов
/ 14 ноября 2010

Как отключить автоматическое преобразование тегов 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;

Как я могу отключить его?

Ответы [ 2 ]

3 голосов
/ 14 ноября 2010

Я не работал с Rails3, поэтому никаких гарантий. но, похоже, это связано с тем, что ваш метод возвращает список.

Rails обычно форматирует внутренние структуры данных для вывода, экранируя специальные символы и отображая html экранированную интерпретацию ваших данных.

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

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

Кроме того, предложение rwilliams aka r-dub использовать raw, вероятно, будет необходимым дополнением к этому коду. Однако raw в списке может привести к нежелательному результату, вероятно, из-за внутреннего вызова to_string. Что является неявным соединением (""). Поэтому добавьте raw к вызову метода в дополнение к возвращению строки.

<%= raw my_method %>
3 голосов
/ 14 ноября 2010

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

<%= raw my_method %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...