2014-10-03 48 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