2011-02-24 86 views
1

我有翼状按键接口与我的网站使用以下HTMLRails的标签选择

<li class="current_page_item"><a href="/home" class="first">Home</a></li> 
<li><a href="/projects">Projects</a></li> 
<li><a href="/resume">Resume</a></li> 
<li><a href="/contact">Contact</a></li> 

class="current_page_item属性更改标签的外观进行交互。每个网址都是我的StaticPages控制器管理的视图,我怎样才能让每个视图都有其各自的“选项卡”选择?

回答

5

current_page?(url)方法可以帮到你。

创建一个辅助方法。

module ApplicationHelper 
    #... 
    def tab_item(name, url) 
    opts = {} 
    opts[:class] = 'current_page_item' if current_page?(url) 
    content_tag :li, opts do 
     link_to name, url 
    end 
    end 
    #... 
end 

而且用它在你看来

<%= tab_item 'Home', root_path %> 
<%= tab_item 'Projects', projects_path %> 
<%= tab_item 'Resume', resume_path %> 
<%= tab_item 'Contact', contact_path %> 
+1

这仅适用于仅希望在每个部分的根页面上标签页的情况。如果您在“项目”中有任何子页面,则它不会与当前页面匹配,也不会“激活”该选项卡。 – bensie 2011-02-24 03:47:37

1

在你的控制器的方法添加before_filterset_current_tab

def set_current_tab 
    @current_tab = "Projects" 
end 

然后,您可以检查此变种在你的意见和显示选项卡,如果@current_tab等于当前选项卡行项目。

+0

如果在同一个控制器不同的标签,你可以直接调用该方法从每个必要的控制方法,你可以添加接受当前的参数选项卡作为字符串。 – bensie 2011-02-24 03:27:30

+0

您不应在视图中设置实例变量。该视图可以检查ivars的值并作出相应的响应,但设置和方法调用属于控制器。 – bensie 2011-02-24 03:39:17