diff --git a/lib/simple_form/form_builder.rb b/lib/simple_form/form_builder.rb index b117d675b..7ce448b5e 100644 --- a/lib/simple_form/form_builder.rb +++ b/lib/simple_form/form_builder.rb @@ -174,7 +174,9 @@ def association(association, options={}, &block) raise "Association #{association.inspect} not found" unless reflection options[:as] ||= :select - options[:collection] ||= reflection.klass.all(reflection.options.slice(:conditions, :order)) + options[:collection] ||= options.fetch(:collection) { + reflection.klass.all(reflection.options.slice(:conditions, :order)) + } attribute = case reflection.macro when :belongs_to diff --git a/test/form_builder/association_test.rb b/test/form_builder/association_test.rb index a2c81d977..95bbd3008 100644 --- a/test/form_builder/association_test.rb +++ b/test/form_builder/association_test.rb @@ -79,6 +79,12 @@ def with_association_for(object, *args) assert_select 'form select option[value=3]', 'Company 3' end + test 'builder creates blank select if collection is nil' do + with_association_for @user, :company, :collection => nil + assert_select 'form select.select#user_company_id' + assert_no_select 'form select option[value=1]', 'Company 1' + end + test 'builder allows collection radio for belongs_to associations' do with_association_for @user, :company, :as => :radio_buttons assert_select 'form input.radio_buttons#user_company_id_1'