Rails在页面中突出显示当前菜单中心

时间:2012-04-12 14:45:54

标签: ruby-on-rails-3.1

所以我在application.html.erb文件中有这个:

<div class="mainMenu">
<%= link_to 'Movies', dvds_path %>  
<%= link_to 'Books', books_path %>  
<%= link_to 'Albums', cds_path %> 
<%= link_to 'Games', games_path %> 
</div>

如果我们在每个页面上,我想在菜单上放置一个“突出显示”类,例如,在电影页面中,如果我们在dvds_path中那么它将是:

<%= link_to 'Movies', dvds_path, :class => 'highlight' %>

但似乎无法弄明白,这些方法都不适合我:

using the controller

using a helper

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:1)

您可以使用:

link_to_unless_current(name, options = {}, html_options = {}, &block)

使用由选项集创建的URL创建给定名称的链接标记,除非当前请求URI与链接相同,在这种情况下仅返回名称(或者给出给定的块,如果有存在)。您可以为link_to_unless_current提供一个专门用于默认行为的块(例如,显示“Start Here”链接而不是链接的文本)。

http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to_unless_current

因此,您可以在导航栏中将“链接”设置为未选中,并在链接不存在时使用“选定”样式。

li { color:#fff; } /* selected */
li a { color:#333; }
li a:hover { color:#999; }

<ul id="navbar">
  <li>Home</li>
  <li><a href="/controller/about">About Us</a></li>
</ul>

答案 1 :(得分:0)

我很确定如果你把它放在一个do块中,你可以在链接是最新的时分配一个备用内容值。

如果当前操作是给定的操作,则评估给予link_to_unless_current的隐式块。所以,如果我们有一个评论页面并希望呈现一个“返回”链接而不是链接到评论页面,我们可以做这样的事情......

<%=
  link_to_unless_current("Comment", { :controller => "comments", :action => "new" }) do
    image_tag src=>"/image.jpg"
  end
%>