menu_builder
A simple helper + controller macro to make easier to highligh menu items based on actions (instead of urls)
Instalation
gem "menu_builder"
Usage
Controller
class DashboardController < ApplicationController
menu_item :mydashboard
...
end
You can also change to menu item at action level instead of class level.
class DashboardController < ApplicationController
menu_item :mydashboard
def prices
menu_item :prices
...
end
end
And you can prepend or append just one item to the collection
class DashboardController < ApplicationController
menu_item :mydashboard
def prices
append_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 %>