2010-06-07 53 views
4

我在我的layout/application.html.erb中填充了一個ul鏈接,並且希望當前位置鏈接標記爲class =「active」。如何在佈局菜單中將鏈接標記爲「活動」?

現在我使用的是:

<%= link_to 'About Us', { :controller => 'aboutus' }, :class => "menu#{' active' if params[:controller] == 'aboutus'}" %> 

但它看起來非常討厭我。

任何人有更好的主意嗎?

回答

12

link_to_unless_current方法實際上並沒有創建鏈接,也不會添加一類的活動狀態。如果你還是想做到這一點,你可以使用current_page方法來檢查,如果當前頁面指定的路由匹配:

<ul id="main_nav"> 
    <li><%= link_to "Search", search_path, :class => ('active' if current_page?(search_path)) %></li> 
</ul> 

或者,如果你想添加的包裝元素的類:

<li class="<%= 'active' if current_page?(search_path) %>"> 
    <%= link_to "Search", search_path %> 
</li> 
+0

實際上,在link_to with:class中,如果條件爲真,if語句只會打印整個link_to,不會影響類。 – Alexis 2014-02-11 13:41:31

+1

糟糕,你說得對。我會解決這個問題。 – Andrew 2014-02-11 18:18:59

0

與鋰標籤的根路徑的一個例子,我試着用content_tag做到這一點,但在一個優雅的方式

<li<%= " class='active'".html_safe if current_page?(root_path) %>> 
    <%= link_to "Home", root_path %> 
</li> 

沒有運氣了萬一我有一些問題WHE ñ我保持空白與bootstrap類(如果我記得很好)