2012-11-21 31 views
0

在我的非high_voltage頁面上,如果用戶在頁面上,我使用以下代碼嚮導航元素添加「活動」類:<li class="<%= 'active' if params[:controller] == 'home' %>"><a href="/">Home</a></li>Rails:如何將活動類添加到導航中的high_voltage頁面

對我的high_voltage頁面(我想要li上的活動類)做同樣的方法是什麼?

<li class="nav-item"><%= link_to 'Plans', page_path("plans") %></li> 
+0

您是否想在單一的,特定的列表項這個類? – samuil

+0

一個特定的列表項。如果我有一個「關於」頁面,我會希望該列表項具有「活動」類。 – sevens

回答

1

我結束了與此:

<li class="nav-item <%= 'active' if page_path == '/about' %>"><%= link_to "About", page_path("about") %></li>

高電壓提供page_path方法鏈接到頁面。我可以使用它來確定我是否在該頁面上,或者不像我使用控制器。

+0

看到我的答案,只是修改了您的答案,使用頁面 – Jashwant

0

由於它是靜態頁面,你可以只寫它直接在HTML代碼:

<li class="active nav-item"><%= link_to 'Plans', page_path("plans") %></li> 
+0

我只有當這個人在頁面上時,我才需要這個類。這個類本身是動態的。 – sevens

0

還有一種解決方案可以將條件邏輯保留在視圖之外,並使用純CSS來標記活動的導航項目。它可以用於包括high_voltage頁面在內的所有視圖。

module ApplicationHelper 
    def body_class 
    "#{controller_name} #{controller_name}-#{controller.action_name} #{params['id']}" 
    end 

    def controller_name 
    controller.controller_path.gsub('/','-') 
    end 
end 

呼叫從佈局輔助方法

<body class="<%= body_class %>"> 

這會給你一個體類這樣當上了PagesController#showid=plans

<body class="pages pages-show plans"> 

的HTML導航看起來像這樣

<ul class="nav-items"> 
    <li class="home">Home</li> 
    <li class="plans">Plans</li> 
    <li class="contact">Contact</li> 
</ul> 

然後你可以使用CSS來定位的導航項目,你想主動

body.home li.home, 
body.plans li.plans, 
body.contact li.contact { 
    // styles for active item 
} 
1

您可以使用high_voltage的page_path功能與current_page?

<li class='<%="active" if current_page?page_path('about') %>'>About</li> 
<li class='<%="active" if current_page?page_path('contact') %>'>Contact</li> 
+1

的動態路徑工作,謝謝,這是比OP提供的接受答案更好的解決方案。 – StandardNerd

相關問題