2014-10-03 114 views
0

我有一个辅助导航栏,允许用户在其帐户的各个方面之间移动。Rails中的动态菜单类分配

DASHBOARD | ACTIVITY | PORTFOLIO |项目

我想有CURRENT_PAGE的CSS大胆,这样当用户在“仪表盘”导航栏看起来是这样的:

仪表板 | ACTIVITY | PORTFOLIO |项目

我一直在摆弄与

if current_page?(controller: 'users', action: 'edit) 
    <span class="bold">DASHBOARD</span> 
else 
    DASHBOARD 
end 

和类似的代码,但它不工作。原因是我用来生成视图的嵌套部分。

例如,用户只能带来了自己的帐户信息,但由于每个用户可以有很多项目,我​​下渲染的部分通话,并从users_controller#show

@projects = Project.where(:owner_id => current_user.id)传递。

由于视图是从users_controller而不是projects_controller生成的,因此它没有选取正确的current_page()

任何有关如何深入挖掘控制器/操作嵌套的想法,或者动态生成css类的更好方法?

回答

1

继承人我将尽

Helper类

def currentp(path) 
    "bold" if request.url.include?(path) 
end 

查看

<%= link_to "users", posts_path, class: currentp(posts_path) %> 

编辑:添加解释

如果您在视图(模板)中工作,并且您需要构建HTML的复杂位(如a或甚至定义类),请使用助手。它还允许您在不连接到数据库的情况下更改数据的表示。

所以在应用>>助手>> users_helper.rb

添加以下代码:

module LocationsHelper 
    def currentp(path) 
     "bold" if request.url.include?(path) 
    end 
end 

这将找到的任何地方currentp被调用,如果页面是当前路径上,它将html中的类定义为bold

然后你可以用简单的CSS定义大胆类

a.bold{ 
    font-weight:700; 
    text-decoration:underline; 
} 
+0

它并不完全符合我的需要,但我会用它玩和尝试,并使其发挥作用。如果可以的话,我会接受你的回答并发布下面的最终代码。 – Matteo 2014-10-03 21:26:10

+0

@Matteo刚刚更新了我的帖子,提供了更新的说明 – jagmitg 2014-10-04 08:28:09