2010-09-17 157 views
2

我如何獲得活動的項目菜單?菜單生成周期活動項目菜單RoR

<ul id="menu"> 
    <% for page in Page.roots %> 
    <li><%= link_to h(page.name), page %></li>  
    <% end %> 
    </ul> 

我想要使用此項目的其他css屬性。 任何想法?最好是js,jquery ...

回答

0

link_to_unless_current包裝了鏈接到a標籤除非鏈接是當前頁面(只顯示沒有a標籤的文本)。藉助一些CSS技巧,您可以將其變爲不同的外觀。我通常使用這種方法:

<ul id="menu"><%= Page.roots.map do |page| 
    content_tag :li, link_to_unless_current(h(page.name), page) 
end %></ul> 

和下面的CSS:

ul#menu li { ...current/selected appearance... } 
ul#menu li a { ...linked/normal appearance... } 
+0

對於一些更高級的設計,你可能想看看'link_to_if'和'link_to_unless',甚至把它們包裝到幫手中。 – hurikhan77 2010-09-17 14:39:32

0
$("#menu a[href$='+location.pathname+']").addClass('current'); 

選擇器#menu a會在菜單中找到所有鏈接。 [href$='+location.pathname+']這個會發現它與($=)作爲當前頁面相同的路徑結尾的鏈接,並且比.addClass('current')的CSS類添加current

+0

類沒有添加。這裏的源http://dpaste.com/244905/ – evoCoder 2010-09-17 13:06:53

0

我傾向於生成我自己對這種事情幫手:

#navigation_helper.rb 
def nav_item(name, link, hilight = false) 
    content_tag :li, link_to(name, link), :class => ("selected" if hilight) 
end 

然後在你的意見只是傳遞相關的布爾值給幫手:

<ul id="menu"> 
    <%= nav_item "Foo admin", admin_path, (params[:controller] == "admin") %> 
    <%= nav_item "Bar page", pages_path(@page), (params[:controller] == "pages" && params[:action] == "show" && params[:id] == @page.id) %> 
    <%= nav_item "Baz example", example_path, any_old_helper? %> 
</ul> 

您需要考慮一種爲您的動態生成的頁面集合實現這種技術的方法,但哪裏有一個方法。 :)