diff --git a/actionpack/lib/action_view/helpers/form_collections_helper.rb b/actionpack/lib/action_view/helpers/form_collections_helper.rb index da89a23552..d3d1ac18d3 100644 --- a/actionpack/lib/action_view/helpers/form_collections_helper.rb +++ b/actionpack/lib/action_view/helpers/form_collections_helper.rb @@ -24,18 +24,12 @@ module ActionView # collection_radio_buttons(:post, :author_id, Author.all, :id, :name_with_initial) # # If @post.author_id is already 1, this would return: - # - # - # - # - # - # - # - # - # - # - # - # + # + # + # + # + # + # def collection_radio_buttons(object, method, collection, value_method, text_method, options = {}, html_options = {}, &block) Tags::CollectionRadioButtons.new(object, method, self, collection, value_method, text_method, options, html_options).render(&block) end @@ -63,18 +57,12 @@ module ActionView # collection_check_boxes(:post, :author_ids, Author.all, :id, :name_with_initial) # # If @post.author_ids is already [1], this would return: - # - # - # - # - # - # - # - # - # - # - # - # + # + # + # + # + # + # # def collection_check_boxes(object, method, collection, value_method, text_method, options = {}, html_options = {}, &block) Tags::CollectionCheckBoxes.new(object, method, self, collection, value_method, text_method, options, html_options).render(&block) diff --git a/actionpack/lib/action_view/helpers/tags/collection_check_boxes.rb b/actionpack/lib/action_view/helpers/tags/collection_check_boxes.rb index 1103341888..7c85441c5d 100644 --- a/actionpack/lib/action_view/helpers/tags/collection_check_boxes.rb +++ b/actionpack/lib/action_view/helpers/tags/collection_check_boxes.rb @@ -20,7 +20,7 @@ module ActionView # server if all check boxes are unchecked. hidden = @template_object.hidden_field_tag(tag_name_multiple, "", :id => nil) - wrap_rendered_collection(rendered_collection + hidden) + rendered_collection + hidden end end end diff --git a/actionpack/lib/action_view/helpers/tags/collection_radio_buttons.rb b/actionpack/lib/action_view/helpers/tags/collection_radio_buttons.rb index 201eff048c..3d04ae3579 100644 --- a/actionpack/lib/action_view/helpers/tags/collection_radio_buttons.rb +++ b/actionpack/lib/action_view/helpers/tags/collection_radio_buttons.rb @@ -5,7 +5,7 @@ module ActionView delegate :radio_button, :label, :to => :@template_object def render - rendered_collection = render_collection do |value, text, default_html_options| + render_collection do |value, text, default_html_options| if block_given? yield sanitize_attribute_name(value), text, value, default_html_options else @@ -13,8 +13,6 @@ module ActionView label(@object_name, sanitize_attribute_name(value), text, :class => "collection_radio_buttons") end end - - wrap_rendered_collection(rendered_collection) end private @@ -49,34 +47,18 @@ module ActionView end def render_collection #:nodoc: - item_wrapper_tag = @options.fetch(:item_wrapper_tag, :span) - item_wrapper_class = @options[:item_wrapper_class] - @collection.map do |item| value = value_for_collection(item, @value_method) text = value_for_collection(item, @text_method) default_html_options = default_html_options_for_collection(item, value) - rendered_item = yield value, text, default_html_options - - item_wrapper_tag ? @template_object.content_tag(item_wrapper_tag, rendered_item, :class => item_wrapper_class) : rendered_item + yield value, text, default_html_options end.join.html_safe end def value_for_collection(item, value) #:nodoc: value.respond_to?(:call) ? value.call(item) : item.send(value) end - - def wrap_rendered_collection(collection) - wrapper_tag = @options[:collection_wrapper_tag] - - if wrapper_tag - wrapper_class = @options[:collection_wrapper_class] - @template_object.content_tag(wrapper_tag, collection, :class => wrapper_class) - else - collection - end - end end end end diff --git a/actionpack/test/template/form_collections_helper_test.rb b/actionpack/test/template/form_collections_helper_test.rb index bb4e9fce1b..ac8e7ddb3f 100644 --- a/actionpack/test/template/form_collections_helper_test.rb +++ b/actionpack/test/template/form_collections_helper_test.rb @@ -76,93 +76,6 @@ class FormCollectionsHelperTest < ActionView::TestCase assert_select 'input[type=radio][value=false].special-radio#user_active_false' end - test 'collection radio wraps the collection in the given collection wrapper tag' do - with_collection_radio_buttons :user, :active, [true, false], :to_s, :to_s, :collection_wrapper_tag => :ul - - assert_select 'ul input[type=radio]', :count => 2 - end - - test 'collection radio does not render any wrapper tag by default' do - with_collection_radio_buttons :user, :active, [true, false], :to_s, :to_s - - assert_select 'input[type=radio]', :count => 2 - assert_no_select 'ul' - end - - test 'collection radio does not wrap the collection when given falsy values' do - with_collection_radio_buttons :user, :active, [true, false], :to_s, :to_s, :collection_wrapper_tag => false - - assert_select 'input[type=radio]', :count => 2 - assert_no_select 'ul' - end - - test 'collection radio uses the given class for collection wrapper tag' do - with_collection_radio_buttons :user, :active, [true, false], :to_s, :to_s, - :collection_wrapper_tag => :ul, :collection_wrapper_class => "items-list" - - assert_select 'ul.items-list input[type=radio]', :count => 2 - end - - test 'collection radio uses no class for collection wrapper tag when no wrapper tag is given' do - with_collection_radio_buttons :user, :active, [true, false], :to_s, :to_s, - :collection_wrapper_class => "items-list" - - assert_select 'input[type=radio]', :count => 2 - assert_no_select 'ul' - assert_no_select '.items-list' - end - - test 'collection radio uses no class for collection wrapper tag by default' do - with_collection_radio_buttons :user, :active, [true, false], :to_s, :to_s, :collection_wrapper_tag => :ul - - assert_select 'ul' - assert_no_select 'ul[class]' - end - - test 'collection radio wrap items in a span tag by default' do - with_collection_radio_buttons :user, :active, [true, false], :to_s, :to_s - - assert_select 'span input[type=radio][value=true]#user_active_true + label' - assert_select 'span input[type=radio][value=false]#user_active_false + label' - end - - test 'collection radio wraps each item in the given item wrapper tag' do - with_collection_radio_buttons :user, :active, [true, false], :to_s, :to_s, :item_wrapper_tag => :li - - assert_select 'li input[type=radio]', :count => 2 - end - - test 'collection radio does not wrap each item when given explicitly falsy value' do - with_collection_radio_buttons :user, :active, [true, false], :to_s, :to_s, :item_wrapper_tag => false - - assert_select 'input[type=radio]' - assert_no_select 'span input[type=radio]' - end - - test 'collection radio uses the given class for item wrapper tag' do - with_collection_radio_buttons :user, :active, [true, false], :to_s, :to_s, - :item_wrapper_tag => :li, :item_wrapper_class => "inline" - - assert_select "li.inline input[type=radio]", :count => 2 - end - - test 'collection radio uses no class for item wrapper tag when no wrapper tag is given' do - with_collection_radio_buttons :user, :active, [true, false], :to_s, :to_s, - :item_wrapper_tag => nil, :item_wrapper_class => "inline" - - assert_select 'input[type=radio]', :count => 2 - assert_no_select 'li' - assert_no_select '.inline' - end - - test 'collection radio uses no class for item wrapper tag by default' do - with_collection_radio_buttons :user, :active, [true, false], :to_s, :to_s, - :item_wrapper_tag => :li - - assert_select "li", :count => 2 - assert_no_select "li[class]" - end - test 'collection radio does not wrap input inside the label' do with_collection_radio_buttons :user, :active, [true, false], :to_s, :to_s @@ -308,92 +221,6 @@ class FormCollectionsHelperTest < ActionView::TestCase assert_select 'label.collection_check_boxes[for=post_category_ids_2]', 'Category 2' end - test 'collection check boxeses wraps the collection in the given collection wrapper tag' do - with_collection_check_boxes :user, :active, [true, false], :to_s, :to_s, :collection_wrapper_tag => :ul - - assert_select 'ul input[type=checkbox]', :count => 2 - end - - test 'collection check boxeses does not render any wrapper tag by default' do - with_collection_check_boxes :user, :active, [true, false], :to_s, :to_s - - assert_select 'input[type=checkbox]', :count => 2 - assert_no_select 'ul' - end - - test 'collection check boxeses does not wrap the collection when given falsy values' do - with_collection_check_boxes :user, :active, [true, false], :to_s, :to_s, :collection_wrapper_tag => false - - assert_select 'input[type=checkbox]', :count => 2 - assert_no_select 'ul' - end - - test 'collection check boxeses uses the given class for collection wrapper tag' do - with_collection_check_boxes :user, :active, [true, false], :to_s, :to_s, - :collection_wrapper_tag => :ul, :collection_wrapper_class => "items-list" - - assert_select 'ul.items-list input[type=checkbox]', :count => 2 - end - - test 'collection check boxeses uses no class for collection wrapper tag when no wrapper tag is given' do - with_collection_check_boxes :user, :active, [true, false], :to_s, :to_s, - :collection_wrapper_class => "items-list" - - assert_select 'input[type=checkbox]', :count => 2 - assert_no_select 'ul' - assert_no_select '.items-list' - end - - test 'collection check boxeses uses no class for collection wrapper tag by default' do - with_collection_check_boxes :user, :active, [true, false], :to_s, :to_s, :collection_wrapper_tag => :ul - - assert_select 'ul' - assert_no_select 'ul[class]' - end - - test 'collection check boxeses wrap items in a span tag by default' do - with_collection_check_boxes :user, :active, [true, false], :to_s, :to_s - - assert_select 'span input[type=checkbox]', :count => 2 - end - - test 'collection check boxeses wraps each item in the given item wrapper tag' do - with_collection_check_boxes :user, :active, [true, false], :to_s, :to_s, :item_wrapper_tag => :li - - assert_select 'li input[type=checkbox]', :count => 2 - end - - test 'collection check boxeses does not wrap each item when given explicitly falsy value' do - with_collection_check_boxes :user, :active, [true, false], :to_s, :to_s, :item_wrapper_tag => false - - assert_select 'input[type=checkbox]' - assert_no_select 'span input[type=checkbox]' - end - - test 'collection check boxeses uses the given class for item wrapper tag' do - with_collection_check_boxes :user, :active, [true, false], :to_s, :to_s, - :item_wrapper_tag => :li, :item_wrapper_class => "inline" - - assert_select "li.inline input[type=checkbox]", :count => 2 - end - - test 'collection check boxeses uses no class for item wrapper tag when no wrapper tag is given' do - with_collection_check_boxes :user, :active, [true, false], :to_s, :to_s, - :item_wrapper_tag => nil, :item_wrapper_class => "inline" - - assert_select 'input[type=checkbox]', :count => 2 - assert_no_select 'li' - assert_no_select '.inline' - end - - test 'collection check boxeses uses no class for item wrapper tag by default' do - with_collection_check_boxes :user, :active, [true, false], :to_s, :to_s, - :item_wrapper_tag => :li - - assert_select "li", :count => 2 - assert_no_select "li[class]" - end - test 'collection check boxes does not wrap input inside the label' do with_collection_check_boxes :user, :active, [true, false], :to_s, :to_s