Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ## application_helper.rb
- module ApplicationHelper
- ACTIVE_MENU_CSS_CLASS = "class=\"active\""
- def css_class_from_action(controller, options={})
- if !options[:controller].blank? && !options[:action].blank?
- if controller.controller_name.downcase == options[:controller].downcase &&
- controller.action_name.downcase == options[:action].downcase
- ACTIVE_MENU_CSS_CLASS
- end
- elsif !options[:action].blank?
- if controller.action_name.downcase == options[:action].downcase
- ACTIVE_MENU_CSS_CLASS
- end
- elsif !options[:controller].blank?
- if controller.controller_name.downcase == options[:controller].downcase
- ACTIVE_MENU_CSS_CLASS
- end
- end
- end
- end
- ## application_helper_spec.rb
- require 'spec_helper'
- describe ApplicationHelper do
- it "prints active CSS class in menu if controller matches" do
- controller_stub = mock("controller", :controller_name => "foo")
- css = helper.css_class_from_action(controller_stub, :controller => "foo")
- css.should == "class=\"active\""
- end
- it "prints active CSS class in menu if action matches" do
- controller_stub = mock("controller", :action_name => "bar")
- css = helper.css_class_from_action(controller_stub, :action => "bar")
- css.should == "class=\"active\""
- end
- it "prints active CSS class in menu if controller and action matches" do
- controller_stub = mock("controller", :controller_name => "foo", :action_name => "bar")
- css = helper.css_class_from_action(controller_stub, :controller => "foo", :action => "bar")
- css.should == "class=\"active\""
- end
- it "prints nothing if names don't match" do
- controller_stub = mock("controller", :controller_name => "foo", :action_name => "bar")
- css = helper.css_class_from_action(controller_stub, :controller => "bar", :action_name => "foo")
- css.should be_nil
- end
- end
- ## example of usage
- ...
- <li <%= css_class_from_action(controller, :action => "dashboard") %>><%= link_to "Dashboard", dashboard_path %></li>
- <li <%= css_class_from_action(controller, :controller => "borrowings") %>><%= link_to "Borrowings", borrowings_path %></li>
Add Comment
Please, Sign In to add comment