2014-11-14 30 views
0

什麼是最好的方法來處理class =「active」問題在Rails中? 我發現如何處理這個單鏈接,但是當模板的不同部分必須設置爲「活動」時,如何處理這個問題? 這裏是我的代碼:紅寶石滑軌在多級菜單中的活動項目

module AdminHelper 
    def nav_link(link_text, link_path) 
     class_name = current_page?(link_path) ? 'active' : nil 
     content_tag(:li) do 
      link_to link_text, link_path, :class => class_name 
     end 
    end 

    def active_section(section) 
     request.fullpath.start_with?(section) 
    end 
end 

而且在佈局保持菜單:

<% if active_section('/superadmin') %> 
<li class="active"> 
<% else %> 
<li> 
<% end %> 
    <a href="#"><i class="fa fa-asterisk fa-fw"></i> Superadmin <span class="fa arrow"></span></a> 
    <ul class="nav nav-second-level"> 
     <%= nav_link 'Add Account', superadmin_new_account_path %> 
     <%= nav_link 'List Accounts', superadmin_list_accounts_path %> 
    </ul> 
</li> 

也就是說,我需要檢查,如果我在URL結構的特定部分,並輸出li class =「active」在這種情況下。否則,只輸出不帶類的元素li。我正在使用一個菜單; MetisMenu並需要設置此類,以便正確的部分被擴展。

我的代碼有效,但感覺可怕的錯誤方式。 如果有人能夠提供關於如何以正確的方式做到這一點的提示,那真的很開心!

回答

0

爲了不被「那傢伙」,但你看着HAML?它使得有條件的分類更容易。它也讀/看起來更乾淨。即

%li{:class => ("active" if active_section('/superadmin'))}