0

我正在尝试构建我的第一个Rails应用程序,并且正在使用Ryan Heath's navigation_helper插件在我的导航中为我提供当前的类。我建我的命名路线如下:将字符串标记为HTML安全

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 %> 

据我所知轨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的方式来看有点不同,但我只是不够清楚。

回答

0

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

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

使用原始我得到的结果相同。 raw和html_safe有什么区别? –

+0

看看这个:http://stackoverflow.com/questions/4251284/raw-vs-html-safe-vs-h-to-unescape-html –

+0

谢谢。我想我现在明白了。如果你不使用圆括号(例如'raw navigation [:games,:new,:previous,:settings')),则raw对于方法调用更好,而html_safe在字符串上看起来更好。 –