【问题标题】:How To add more element to nav_link on current_page?如何在 current_page 上向 nav_link 添加更多元素?
【发布时间】:2012-12-25 15:35:57
【问题描述】:

我在导航菜单中有一些静态页面。我想为当前显示的项目添加更多元素。

在视图布局/adminzor.html.erb 上导航

<ul class='main-nav'>
    <%= nav_link 'Dashboard', adminzor_path %>
</ul>

关于 application_helper.rb

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

和输出

<ul class='main-nav'>
   <li class="active">
      <a href="/adminzor">Dashboard</a>
   </li>
</ul>

因为我将 nav_link 助手与 Twitter Bootstrap 的 nav 组件一起使用,该组件更喜欢将链接包装在 li 标签内,并将“活动”类应用于外部 li。 我在视图上添加了一些元素,例如

<%= nav_link adminzor_path, :class => "light" do %>
  <div class="ico"><i class="icon-home icon-white"></i></div>
  Dashboard
<% end %>

和助手

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

但是错误

ArgumentError in Adminzor/dashboards#index

Showing c:/Sites/zionrails/app/views/layouts/adminzor.html.erb where line #44 raised:

wrong number of arguments (3 for 2)

我想输出比如

<ul class='main-nav'>
<li class="active">
 <a href="/adminzor" class="light">
    <div class="ico">
       <i class="icon-home icon-white"></i>
    </div>Dashboard
 </a>
</li>
</ul>

还有其他解决方案吗?谢谢

【问题讨论】:

    标签: navigation ruby-on-rails-3.2 urlhelper current-page


    【解决方案1】:
      def menu_link(link_text, icon_type, link_path)
        class_name = current_page?(link_path) ? 'active' : ''
    
        content_tag(:li, :class => class_name) do
          link_to link_path do
            content_tag(:i, '', :class => icon_type) + link_text
          end
        end
    
      end
    

    然后打电话:

    <%= menu_link('My lists', 'icon-list', user_lists_path(@user)) %>
    

    【讨论】:

      【解决方案2】:

      已解决

      application_helper.rb

      def is_active?(link_path)
        if current_page?(link_path)
          "active"
        else
          ""
        end
      end
      

      在 layout/adminzor.html.erb 上如

      <li class="<%= is_active?(adminzor_path) %>">
                      <%= link_to adminzor_path, :class => 'light' do %>
                      <div class="ico"><i class="icon-home icon-white"></i></div>
                      Dashboard
                      <% end %>
      </li>
      

      【讨论】:

        猜你喜欢
        • 2012-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多