Guest User

Untitled

a guest
Jul 16th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.16 KB | None | 0 0
  1. ## application_helper.rb
  2. module ApplicationHelper
  3.  
  4. ACTIVE_MENU_CSS_CLASS = "class=\"active\""
  5.  
  6. def css_class_from_action(controller, options={})
  7. if !options[:controller].blank? && !options[:action].blank?
  8. if controller.controller_name.downcase == options[:controller].downcase &&
  9. controller.action_name.downcase == options[:action].downcase
  10. ACTIVE_MENU_CSS_CLASS
  11. end
  12. elsif !options[:action].blank?
  13. if controller.action_name.downcase == options[:action].downcase
  14. ACTIVE_MENU_CSS_CLASS
  15. end
  16. elsif !options[:controller].blank?
  17. if controller.controller_name.downcase == options[:controller].downcase
  18. ACTIVE_MENU_CSS_CLASS
  19. end
  20. end
  21.  
  22. end
  23. end
  24.  
  25. ## application_helper_spec.rb
  26. require 'spec_helper'
  27.  
  28. describe ApplicationHelper do
  29.  
  30. it "prints active CSS class in menu if controller matches" do
  31. controller_stub = mock("controller", :controller_name => "foo")
  32. css = helper.css_class_from_action(controller_stub, :controller => "foo")
  33. css.should == "class=\"active\""
  34. end
  35.  
  36. it "prints active CSS class in menu if action matches" do
  37. controller_stub = mock("controller", :action_name => "bar")
  38. css = helper.css_class_from_action(controller_stub, :action => "bar")
  39. css.should == "class=\"active\""
  40. end
  41.  
  42. it "prints active CSS class in menu if controller and action matches" do
  43. controller_stub = mock("controller", :controller_name => "foo", :action_name => "bar")
  44. css = helper.css_class_from_action(controller_stub, :controller => "foo", :action => "bar")
  45. css.should == "class=\"active\""
  46. end
  47.  
  48. it "prints nothing if names don't match" do
  49. controller_stub = mock("controller", :controller_name => "foo", :action_name => "bar")
  50. css = helper.css_class_from_action(controller_stub, :controller => "bar", :action_name => "foo")
  51. css.should be_nil
  52. end
  53.  
  54. end
  55.  
  56. ## example of usage
  57. ...
  58.  
  59. <li <%= css_class_from_action(controller, :action => "dashboard") %>><%= link_to "Dashboard", dashboard_path %></li>
  60. <li <%= css_class_from_action(controller, :controller => "borrowings") %>><%= link_to "Borrowings", borrowings_path %></li>
Add Comment
Please, Sign In to add comment