2012-04-12 59 views
0

所以我有这个在我的application.html.erb文件:Rails的高亮显示页当前菜单殿

<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

任何帮助,将不胜感激

回答

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> 
+0

这很好,但我不能把一个图像在未选定的(当前)链接中,因为没有任何机制可以将类加亮,因为它根本不是链接。我试图设置背景图像为没有链接,但没有工作。我可以给当前页面(不再是链接的那个页面)上课吗?如果是这样,我该怎么做? – kakubei 2012-04-13 10:20:37

+0

再次看到下面回答.. – RGB 2012-04-13 14:16:18

0

Im相当肯定如果你把它放在do块中,你可以分配一个替代内容值,如果链接是当前的。

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

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

是的,我可以从例如看着办吧,你发来的链接,谢谢。 – kakubei 2012-04-14 08:06:33