2012-02-29 45 views
0

我想根據用戶所在的頁面設置活動li類。重構簡單的導軌代碼,用於在導航中指定活動li

我有4個導航元素,他們都看起來像這樣:

<% if @activeLi == "home" %>   
    <li class="active"> 
<% else %> 
    <li> 
<% end %> 
    <%= link_to :controller => "home" do %> 
     <span>Home</span> 
    <% end %> 
</li> 

,然後在每個控制器我只設置@activeLi這樣的:

def index 
    @activeLi = "about" 
end 

我知道這是非常基本的東西,但我只是想知道是否有更簡單的方法來做到這一點?

回答

2

嗯,我知道一種方法,你可以簡化這一點,這是擺脫使用這些討厭的實例變量的需要。

<li class="<%= controller_name == "home" ? 'active': '' %>"> 
    <%= link_to :controller => "home" do %> 
     <span>Home</span> 
    <% end %> 
</li> 
+0

作爲新手我是RoR,我沒有意識到controller_name函數。感謝那。 – Catfish 2012-02-29 06:01:52

+1

真的有上百種。幾個月前我才瞭解到controller_name。我真的建議下載(Pry Gem)[http://pry.github.com/]並將其應用到您的開發過程中。能夠暫停腳本的執行或網頁的渲染,然後檢查所有可用的變量和方法是否在範圍之內,都是真正的生活保護。 – 2012-02-29 06:17:51

+0

+1 for pry!.... – 2012-02-29 08:32:11