我如何獲得活動的項目菜單?菜單生成周期活動項目菜單RoR
<ul id="menu">
<% for page in Page.roots %>
<li><%= link_to h(page.name), page %></li>
<% end %>
</ul>
我想要使用此項目的其他css屬性。 任何想法?最好是js,jquery ...
我如何獲得活動的項目菜單?菜單生成周期活動項目菜單RoR
<ul id="menu">
<% for page in Page.roots %>
<li><%= link_to h(page.name), page %></li>
<% end %>
</ul>
我想要使用此項目的其他css屬性。 任何想法?最好是js,jquery ...
有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... }
$("#menu a[href$='+location.pathname+']").addClass('current');
選擇器#menu a
會在菜單中找到所有鏈接。 [href$='+location.pathname+']
這個會發現它與($=
)作爲當前頁面相同的路徑結尾的鏈接,並且比.addClass('current')
的CSS類添加current
類沒有添加。這裏的源http://dpaste.com/244905/ – evoCoder 2010-09-17 13:06:53
我傾向於生成我自己對這種事情幫手:
#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>
您需要考慮一種爲您的動態生成的頁面集合實現這種技術的方法,但哪裏有一個方法。 :)
對於一些更高級的設計,你可能想看看'link_to_if'和'link_to_unless',甚至把它們包裝到幫手中。 – hurikhan77 2010-09-17 14:39:32