Пометка строки как безопасной для HTML

Я пытаюсь создать свое первое приложение Rails и использую плагин навигационный_помощник Райана Хита, чтобы получить текущую класс в моей навигации. Я построил свои именованные маршруты следующим образом:

match 'games' => 'games#index', :as => :games
match 'new' => 'games#new', :as => :new
match 'previous' => 'games#previous', :as => :previous
match 'settings' => 'settings#index', :as => :settings

Затем в моем application_layout я добавил следующий код

<%= navigation([:games, :new, :previous, :settings]).html_safe %>

Из того, что я знаю о Rails, html_safe должен заставить HTML отображаться правильно, но вместо этого я получаю следующее:

<ul class="navigation">[&quot;&lt;li class=\&quot;current\&quot;&gt;&lt;a href=\&quot;/games\&quot;&gt;Games&lt;/a&gt;&lt;/li&gt;&quot;, &quot;&lt;li class=\&quot;\&quot;&gt;&lt;a href=\&quot;/new\&quot;&gt;New&lt;/a&gt;&lt;/li&gt;&quot;, &quot;&lt;li class=\&quot;\&quot;&gt;&lt;a href=\&quot;/previous\&quot;&gt;Previous&lt;/a&gt;&lt;/li&gt;&quot;, &quot;&lt;li class=\&quot;\&quot;&gt;&lt;a href=\&quot;/settings\&quot;&gt;Settings&lt;/a&gt;&lt;/li&gt;&quot;]</ul> 

Я что-то не так делаю или плагин что-то не так делает? Я знаю, что плагин был написан еще в дни 2.x, которые, насколько я знаю, обрабатывали HTML немного по-другому, но я просто не знаю достаточно.


person Dave Long    schedule 04.09.2011    source источник


Ответы (2)



Вы можете использовать метод raw(), чтобы избежать экранирования:

<%= raw(navigation([:games, :new, :previous, :settings])) %>
person Pavel S.    schedule 04.09.2011
comment
Используя raw, я получаю тот же результат. В чем разница между raw и html_safe? - person Dave Long; 04.09.2011
comment
Проверьте это: stackoverflow.com/questions/4251284/ - person Pavel S.; 04.09.2011
comment
Спасибо. Думаю, теперь я понимаю. Raw кажется лучше для вызовов методов, если вы не используете круглые скобки (например, raw navigation [:games, :new, :previous, :settings), тогда как html_safe лучше подходит для строк. - person Dave Long; 04.09.2011
comment
Все еще получаю тот же результат, независимо от того, какой метод я использую. Всегда экранированная строка - person Dave Long; 04.09.2011