diff options
author | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2013-06-16 09:35:18 -0700 |
---|---|---|
committer | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2013-06-16 09:35:18 -0700 |
commit | 0f89689b2357f39da52515b83391db58689a1361 (patch) | |
tree | c9b954ec5da7c225e65992f83f5e33af4ac59419 /actionpack | |
parent | 76462a8543b7feac6b2957cf2c0724b30775c3c7 (diff) | |
parent | 782cee5377dda1f8f0f84988c3959a06aa884d95 (diff) | |
download | rails-0f89689b2357f39da52515b83391db58689a1361.tar.gz rails-0f89689b2357f39da52515b83391db58689a1361.tar.bz2 rails-0f89689b2357f39da52515b83391db58689a1361.zip |
Merge pull request #10964 from nashby/collection-html-options
collection tags accept html attributes as the last element of collection
Diffstat (limited to 'actionpack')
-rw-r--r-- | actionpack/CHANGELOG.md | 5 | ||||
-rw-r--r-- | actionpack/lib/action_view/helpers/tags/collection_helpers.rb | 3 | ||||
-rw-r--r-- | actionpack/test/template/form_collections_helper_test.rb | 16 |
3 files changed, 23 insertions, 1 deletions
diff --git a/actionpack/CHANGELOG.md b/actionpack/CHANGELOG.md index 8996c38c61..46ebc2a61a 100644 --- a/actionpack/CHANGELOG.md +++ b/actionpack/CHANGELOG.md @@ -1,3 +1,8 @@ +* Element of the `collection_check_boxes` and `collection_radio_buttons` can + optionally contain html attributes as the last element of the array. + + *Vasiliy Ermolovich* + * Update the HTML `BOOLEAN_ATTRIBUTES` in `ActionView::Helpers::TagHelper` to conform to the latest HTML 5.1 spec. Add attributes `allowfullscreen`, `default`, `inert`, `sortable`, `truespeed`, `typemustmatch`. Fix attribute diff --git a/actionpack/lib/action_view/helpers/tags/collection_helpers.rb b/actionpack/lib/action_view/helpers/tags/collection_helpers.rb index cd12ddaf65..388dcf1f13 100644 --- a/actionpack/lib/action_view/helpers/tags/collection_helpers.rb +++ b/actionpack/lib/action_view/helpers/tags/collection_helpers.rb @@ -73,8 +73,9 @@ module ActionView value = value_for_collection(item, @value_method) text = value_for_collection(item, @text_method) default_html_options = default_html_options_for_collection(item, value) + additional_html_options = option_html_attributes(item) - yield item, value, text, default_html_options + yield item, value, text, default_html_options.merge(additional_html_options) end.join.html_safe end end diff --git a/actionpack/test/template/form_collections_helper_test.rb b/actionpack/test/template/form_collections_helper_test.rb index 2131f81396..bc9c21dfd3 100644 --- a/actionpack/test/template/form_collections_helper_test.rb +++ b/actionpack/test/template/form_collections_helper_test.rb @@ -76,6 +76,14 @@ class FormCollectionsHelperTest < ActionView::TestCase assert_select 'input[type=radio][value=false].special-radio#user_active_false' end + test 'collection radio accepts html options as the last element of array' do + collection = [[1, true, {class: 'foo'}], [0, false, {class: 'bar'}]] + with_collection_radio_buttons :user, :active, collection, :second, :first + + assert_select 'input[type=radio][value=true].foo#user_active_true' + assert_select 'input[type=radio][value=false].bar#user_active_false' + end + test 'collection radio does not wrap input inside the label' do with_collection_radio_buttons :user, :active, [true, false], :to_s, :to_s @@ -192,6 +200,14 @@ class FormCollectionsHelperTest < ActionView::TestCase assert_select 'label[for=user_name_199]', '$1.99' end + test 'collection check boxes accepts html options as the last element of array' do + collection = [[1, 'Category 1', {class: 'foo'}], [2, 'Category 2', {class: 'bar'}]] + with_collection_check_boxes :user, :active, collection, :first, :second + + assert_select 'input[type=checkbox][value=1].foo' + assert_select 'input[type=checkbox][value=2].bar' + end + test 'collection check boxes accepts selected values as :checked option' do collection = (1..3).map{|i| [i, "Category #{i}"] } with_collection_check_boxes :user, :category_ids, collection, :first, :last, :checked => [1, 3] |