2011-08-27 163 views
1

我在application.html中有我的导航菜单,菜单中有class =“active”。这取决于用户所在的页面。我怎样才能动态地找出哪些项目需要有类:导轨导航菜单

这里是我的顶部菜单栏是如何:

<ul> 
    <li class="active"><a href="#">Home</a></li> 
    <li><a href="#">Page1</a></li> 
    <li><a href="#">Page2</a></li> 
    <li><a href="#">Page3</a></li> 
</ul> 
+1

这或许SO [问题](http://stackoverflow.com/q/1751863/22371)将帮助或查看[Tabs on Rails](http://github.com/weppos/tabs_on_rails)gem。 – kafuchau

回答

2

一种方法是在控制器的@active_page实例变量,你设置每个动作。你也可以用一个标题(@title也许?)来做到这一点,所以也许你可以使用它。然后在模板:

<li class="<%= "active" if @active_page == "Home" %>">...</li> 
+0

'@ controller.controller_name'和'@ controller.action_name'会更好吗? – hachpai

+0

@hachpai - 这是另一种方式来做到这一点! – brentvatne

1

最简单的(也可能是最起码的)是使用current_page?。你可以read up in the docs看看它是如何工作的。由于I've experienced,它并不总是产生你想要的。

还有一个宝石,navigasmic,如果您的需求相当复杂,它可以很好地工作。

有很多方法可以完成您正在尝试做的事情。首先尝试current_page?,如果你发现自己抓住你的头发,继续前往navigasmic。

+0

我一直在我的ide情报中看到当前页面,但从来不知道它是 – Uchenna

0

您可以创建一个赛普尔助手这样

def nav_link(name, url) 
    selected = url.all? { |key, value| params[key] == value } 
    link_to(name, url, :class => (selected ? "youarehere tabs" : "tabs")) 
    end 

<div id="tabs" class="tabs2"> 
    <%= nav_link %> 
    <%= nav_link %> 
    <%= nav_linl %> 
</div> 

然后添加必要的CSS样式