menu_builder
A simple helper to make easier the process of highlighting menu items based on current url. The goal here is to reduce the amount of if/elses you would typically need in your views to achieve the same results.
Instalation
gem "menu_builder"
Usage
First flag at class level in your Controller which item should be highlighted
Controller
class DashboardController < ApplicationController
menu_item :mydashboard
...
end
You can also change to menu item at action level instead of class level. This option is helpful when you have most of the actions pointing to one menu item but a few actions pointing to another.
class DashboardController < ApplicationController
menu_item :mydashboard
def prices
menu_item :prices
...
end
end
View
ERB code
<%= menu(:id=>"mainMenu", :class=>"menu") do |m| %>
<%= m.account 'Account', account_path, :style => 'float: right' %>
<%= m.users 'Users', users_path, :style => 'float: right' %>
<%= m.mydashboard 'Dashboard', '/' %>
<%= m.projects 'Projects', projects_path %>
<% end %>
HTML Result
<ul id="mainMenu" class="menu">
<li><a href="/accounts">Account</a></li>
<li><a href="/users">Users</a></li>
<li><a href="/" class="current">Dashboard</a></li>
<li><a href="/projects">Projects</a></li>
</ul>
Blocks for content
You can also pass blocks:
<%= menu do |m| %>
<% m.account account_path do %>
<%= image_tag "icon.jpg" /> Accounts
<% end %>
<%= m.users "Users", users_path %>
<%= m.posts "Posts", posts_path %>
<% end %>