2012-04-12 58 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