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在字符串上看起來更好。 –