如何将布局菜单中的链接标记为rails中的“活动”?

时间:2010-06-07 16:28:52

标签: ruby-on-rails

我的layout / application.html.erb中有一个ul填充了链接,并希望当前位置链接标记为class =“active”。

现在我正在使用:

<%= link_to 'About Us', { :controller => 'aboutus' }, :class => "menu#{' active' if params[:controller] == 'aboutus'}" %>

但它对我来说看起来很讨厌。

任何人都有更好的主意吗?

3 个答案:

答案 0 :(得分:14)

link_to_unless_current方法实际上并不创建链接,也没有添加活动类。如果您仍想这样做,可以使用current_page方法检查当前页面是否与您指定的路线匹配:

<ul id="main_nav">
  <li><%= link_to "Search", search_path, :class => ('active' if current_page?(search_path)) %></li>
</ul>

或者如果你想在包装元素上添加类:

<li class="<%= 'active' if current_page?(search_path) %>">
  <%= link_to "Search", search_path %>
</li>

答案 1 :(得分:5)

您可以使用类似于link_to

的帮助方法

它叫做“link_to_unless_current”。

http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html(在此处查找详细信息)

HTH

答案 2 :(得分:0)

带有li标签的根路径的示例,我尝试使用content_tag进行,但是if if case的优雅方式没有运气

<li<%= " class='active'".html_safe if current_page?(root_path) %>>
    <%= link_to "Home", root_path %>
</li>

我有一些问题,当我用引导程序保持班级空白时(如果我记得很清楚)