添加一个类来锚定li类已经“当前”

时间:2012-01-21 19:31:35

标签: ruby-on-rails ruby-on-rails-3 link-to

我一直在尝试解决这个问题。我有一个导航,其中列表项获得一个"活跃"在那个页面上。我还需要为这些列表项的锚点提供一个唯一的类。所以我的代码是:

Application_helper

def link_to_with_current_class(name, options)
  if current_page?(options)
    content_tag :li, link_to(h(name), options), :class => "current"
  else
    content_tag :li, link_to(h(name), options)
  end   
end

导航

<ul id="nav">
      <%= link_to_with_current_class "work", home_path %>
      <%= link_to_with_current_class "about", about_path %>
      <%= link_to_with_current_class "contact", contact_path %>
    </ul> 

这生成

<ul id="nav">
      <li class="current"><a href="/">work</a></li>
      <li><a href="/about">about</a></li>
      <li><a href="/contact">contact</a></li>
    </ul>

我需要它来生成

<ul id="nav">
      <li class="current"><a **class="work"** href="/">work</a></li>
      <li><a **class="about"** href="/about">about</a></li>
      <li><a **class="contact"** href="/contact">contact</a></li>
    </ul>

我尝试了很多方法,但我尝试的一切都打破了它。对这个问题的任何帮助都会有很大的帮助。

1 个答案:

答案 0 :(得分:1)

这看起来可能有效:

def link_to_with_current_class(name, options)
  if current_page?(options)
    content_tag :li, link_to(h(name), options, :class => name), :class => "current"
  else
    content_tag :li, link_to(h(name), options, :class => name)
  end   
end