ruby on rails多级菜单中的活动项目

时间:2014-11-14 15:02:46

标签: ruby-on-rails ruby menu

在Rails中处理 class ="活动" 问题的最佳方法是什么? 我已经找到了如何处理单链接,但是当类必须设置为" active"在模板的不同部分,如何处理这个? 这是我的代码:

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>

也就是说,我需要检查我是否在网址结构的特定部分,并输出 li class =&#34; active&#34; 以防万一。否则只输出没有类的 li 元素。我正在使用菜单; MetisMenu需要设置此类,以便扩展正确的部分。

我的代码可以运行,但这样做感觉很糟糕。 如果有人能够以正确的方式暗示如何做到这一点,那真的很高兴!

2 个答案:

答案 0 :(得分:0)

我建议使用simple-navigation gem

答案 1 :(得分:0)

不是那个家伙&#39;,但是你有没有看过HAML?它使得条件分类变得更容易。它也读/看起来更干净。即。

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