mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
collection tags accept html attributes as the last element of collection
This commit is contained in:
parent
76462a8543
commit
782cee5377
3 changed files with 23 additions and 1 deletions
|
@ -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`
|
* Update the HTML `BOOLEAN_ATTRIBUTES` in `ActionView::Helpers::TagHelper`
|
||||||
to conform to the latest HTML 5.1 spec. Add attributes `allowfullscreen`,
|
to conform to the latest HTML 5.1 spec. Add attributes `allowfullscreen`,
|
||||||
`default`, `inert`, `sortable`, `truespeed`, `typemustmatch`. Fix attribute
|
`default`, `inert`, `sortable`, `truespeed`, `typemustmatch`. Fix attribute
|
||||||
|
|
|
@ -73,8 +73,9 @@ module ActionView
|
||||||
value = value_for_collection(item, @value_method)
|
value = value_for_collection(item, @value_method)
|
||||||
text = value_for_collection(item, @text_method)
|
text = value_for_collection(item, @text_method)
|
||||||
default_html_options = default_html_options_for_collection(item, value)
|
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.join.html_safe
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -76,6 +76,14 @@ class FormCollectionsHelperTest < ActionView::TestCase
|
||||||
assert_select 'input[type=radio][value=false].special-radio#user_active_false'
|
assert_select 'input[type=radio][value=false].special-radio#user_active_false'
|
||||||
end
|
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
|
test 'collection radio does not wrap input inside the label' do
|
||||||
with_collection_radio_buttons :user, :active, [true, false], :to_s, :to_s
|
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'
|
assert_select 'label[for=user_name_199]', '$1.99'
|
||||||
end
|
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
|
test 'collection check boxes accepts selected values as :checked option' do
|
||||||
collection = (1..3).map{|i| [i, "Category #{i}"] }
|
collection = (1..3).map{|i| [i, "Category #{i}"] }
|
||||||
with_collection_check_boxes :user, :category_ids, collection, :first, :last, :checked => [1, 3]
|
with_collection_check_boxes :user, :category_ids, collection, :first, :last, :checked => [1, 3]
|
||||||
|
|
Loading…
Reference in a new issue