2012-02-29 15 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