将字符串标记为HTML安全

时间:2011-09-04 17:25:29

标签: ruby-on-rails ruby-on-rails-3 navigation ruby-on-rails-plugins

我正在尝试构建我的第一个Rails应用程序,并且我正在使用Ryan Heath's navigation_helper插件为我提供导航中的当前类。我按如下方式构建了我的命名路由:

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有点不同,但我只是不太了解。

2 个答案:

答案 0 :(得分:0)

您可以使用raw()方法来避免转义:

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

答案 1 :(得分:0)