Simple helper for menus and tabs in Rails
Ruby
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib
test
.document
.gitignore
Gemfile
LICENSE
README.rdoc
Rakefile
init.rb
menu_builder.gemspec

README.rdoc

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 %>