From ddb52a814ede3307ee9dba58cda465bbae09eb34 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Sat, 1 Oct 2011 13:08:42 -0400 Subject: [PATCH] allow #body_class to take an optional argument of a symbol which it will use #content_for on to add more body classes, defaults to :extra_body_classes --- app/helpers/body_class_helper.rb | 11 +++++++++-- spec/helpers/body_class_helper_spec.rb | 15 ++++++++++++++- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/app/helpers/body_class_helper.rb b/app/helpers/body_class_helper.rb index 8076414..62c5fa9 100644 --- a/app/helpers/body_class_helper.rb +++ b/app/helpers/body_class_helper.rb @@ -1,6 +1,13 @@ module BodyClassHelper - def body_class + def body_class(options = {}) + extra_body_classes_symbol = options[:extra_body_classes_symbol] || :extra_body_classes qualified_controller_name = controller.controller_path.gsub('/','-') - "#{qualified_controller_name} #{qualified_controller_name}-#{controller.action_name}" + basic_body_class = "#{qualified_controller_name} #{qualified_controller_name}-#{controller.action_name}" + + if content_for?(extra_body_classes_symbol) + [basic_body_class, content_for(extra_body_classes_symbol)].join(' ') + else + basic_body_class + end end end diff --git a/spec/helpers/body_class_helper_spec.rb b/spec/helpers/body_class_helper_spec.rb index 748a547..38a0667 100644 --- a/spec/helpers/body_class_helper_spec.rb +++ b/spec/helpers/body_class_helper_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -describe BodyClassHelper do +describe BodyClassHelper, 'without any extra body classes' do describe "body_class with a normal controller" do before do controller = mock @@ -24,3 +24,16 @@ end end end + +describe BodyClassHelper, 'with extra body classes' do + before do + controller = mock + controller.stubs(:controller_path).returns('widgets') + controller.stubs(:action_name).returns('show') + helper.stubs(:controller).returns controller + helper.content_for(:extra_body_classes, 'extra_class') + end + it "adds extra body classes to the controller classes" do + helper.body_class.should == 'widgets widgets-show extra_class' + end +end