diff --git a/lib/simple_form/action_view_extensions/form_helper.rb b/lib/simple_form/action_view_extensions/form_helper.rb index 921cf5fd..85864978 100644 --- a/lib/simple_form/action_view_extensions/form_helper.rb +++ b/lib/simple_form/action_view_extensions/form_helper.rb @@ -12,10 +12,17 @@ module SimpleForm module FormHelper [:form_for, :fields_for, :remote_form_for].each do |helper| class_eval <<-METHOD, __FILE__, __LINE__ - def simple_#{helper}(*args, &block) + def simple_#{helper}(record_or_name_or_array, *args, &block) options = args.extract_options! options[:builder] = SimpleForm::FormBuilder - #{helper}(*(args << options), &block) + css_class = case record_or_name_or_array + when String, Symbol then record_or_name_or_array.to_s + when Array then dom_class(record_or_name_or_array.last) + else dom_class(record_or_name_or_array) + end + options[:html] ||= {} + options[:html][:class] = "simple_form \#{css_class} \#{options[:html][:class]}".strip + #{helper}(record_or_name_or_array, *(args << options), &block) end METHOD end diff --git a/test/action_view_extensions/form_helper_test.rb b/test/action_view_extensions/form_helper_test.rb index 9d3d17a3..96bb5582 100644 --- a/test/action_view_extensions/form_helper_test.rb +++ b/test/action_view_extensions/form_helper_test.rb @@ -8,6 +8,21 @@ class FormHelperTest < ActionView::TestCase end end + test 'simple form should add default class to form' do + simple_form_for :user do |f| end + assert_select 'form.simple_form' + end + + test 'simple form should add object name as css class to form when object is not present' do + simple_form_for :user do |f| end + assert_select 'form.simple_form.user' + end + + test 'simple form should add object class name as css class to form' do + simple_form_for @user do |f| end + assert_select 'form.simple_form.user' + end + test 'pass options to simple form' do simple_form_for :user, :url => '/account', :html => { :id => 'my_form' } do |f| end assert_select 'form#my_form'