2014-11-14 2 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 класс = "активный" в случае этого. В противном случае просто выводя элемент li без класса. Я использую меню; MetisMenu и должен установить этот класс, поэтому правильный раздел будет расширен.

Мой код работает, но это кажется ужасным неправильным способом сделать это. Был бы очень рад, если кто-то может дать понять, как это сделать правильно!

ответ

0

не быть «что парень», но вы смотрели в HAML? Это упрощает классическую классификацию. Он также читает/выглядит намного чище. т.е.

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

Смежные вопросы