0

所以我在 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' %>

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

使用控制器

使用助手

任何帮助,将不胜感激

4

2 回答 2

1

你可以使用:

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

使用由选项集创建的 URL 创建给定名称的链接标记,除非当前请求 URI 与链接相同,在这种情况下,仅返回名称(或产生给定块,如果存在)。你可以给link_to_unless_current 一个专门化默认行为的块(例如,显示“从这里开始”链接而不是链接的文本)。

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>
于 2012-04-12T14:55:26.013 回答
0

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

如果当前操作是给定的操作,则评估给定给 link_to_unless_current 的隐式块。所以,如果我们有一个评论页面并且想要呈现一个“返回”链接而不是评论页面的链接,我们可以这样做......</p>

<%=
  link_to_unless_current("Comment", { :controller => "comments", :action => "new" }) do
    image_tag src=>"/image.jpg"
  end
%>
于 2012-04-13T14:18:57.657 回答