ヘッダーメニューのハイライト
あけましておめでとうございます。
で、さっそく技術の話題ですが、グローバルに表示しておきたいメニューで、なおかつページごとにハイライトさせたいものってありますよね。
それをきれいにやる方法。
#ul.nav = content_tag :li, class: is_active?("admin/branches#show", "admin/branches#new", "admin/kommits#show", "admin/files#index", "admin/files#show") do = link_to "Content", admin_branch_path(branch) = content_tag :li, class: ["divider-vertical", is_active?("admin/kommits#new")] do = link_to "Status", new_admin_branch_kommit_path(branch)
まぁこやってクラス名を場合によってつけるだけなんですが。
◯app/helpers/application_helper.rb
def is_active?(*page) "active" if page.include? "#{params[:controller]}##{params[:action]}" end
こうすれば可変長で、"users#show"と"users#index"でハイライト、とかも自由自在ですね。
ちなみにclass名を降るだけならcontent_tagじゃなくてもhamlレベルでやり方ありそうだけど、気づいたら教えて下さい