Как добавить еще элемент к nav_link на current_page?

У меня есть несколько статических страниц в меню навигации. Я хочу добавить больше элемента к элементу, который отображается в данный момент.

навигация по макету представления /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 с компонентом nav в Bootstrap Twitter, который предпочитает оборачивать ссылки внутри тегов li, а класс "active" применять к внешнему 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>

Есть ли другие решения? Спасибо

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>
  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)) %>
Другие вопросы по тегам