collection tags accept html attributes as the last element of collection
This commit is contained in:
parent
0da7b473cb
commit
e264a43dfe
|
@ -1,6 +1,8 @@
|
|||
## master
|
||||
|
||||
### enhancements
|
||||
* Collection tags accept html attributes as the last element of collection [@nashby](https://github.com/nashby)
|
||||
* Change default `:value_method` of collection tags from `:last` to `:second` [@nashby](https://github.com/nashby)
|
||||
* Support `Proc` object in `:conditions` option of associations [@bradly](https://github.com/bradly)
|
||||
* `input_field` supports `html5` component [@nashby](https://github.com/nashby)
|
||||
|
||||
|
|
|
@ -66,7 +66,7 @@ module SimpleForm
|
|||
collection_translated = translate_collection if collection_classes == [Symbol]
|
||||
|
||||
if collection_translated || collection_classes.include?(Array)
|
||||
{ label: :first, value: :last }
|
||||
{ label: :first, value: :second }
|
||||
elsif collection_includes_basic_objects?(collection_classes)
|
||||
{ label: :to_s, value: :to_s }
|
||||
else
|
||||
|
|
|
@ -11,8 +11,9 @@ module SimpleForm
|
|||
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)
|
||||
|
||||
rendered_item = yield item, value, text, default_html_options
|
||||
rendered_item = yield item, value, text, default_html_options.merge(additional_html_options)
|
||||
|
||||
item_wrapper_tag ? @template_object.content_tag(item_wrapper_tag, rendered_item, class: item_wrapper_class) : rendered_item
|
||||
end.join.html_safe
|
||||
|
|
|
@ -60,6 +60,11 @@ class CollectionCheckBoxesInputTest < ActionView::TestCase
|
|||
assert_no_select 'form ul'
|
||||
end
|
||||
|
||||
test 'input check boxes accepts html options as the last element of collection' do
|
||||
with_input_for @user, :name, :check_boxes, collection: [['Jose', 'jose', class: 'foo']]
|
||||
assert_select 'input.foo[type=checkbox][value=jose]'
|
||||
end
|
||||
|
||||
test 'input check boxes wraps the collection in the configured collection wrapper tag' do
|
||||
swap SimpleForm, collection_wrapper_tag: :ul do
|
||||
with_input_for @user, :active, :check_boxes
|
||||
|
|
|
@ -82,6 +82,11 @@ class CollectionRadioButtonsInputTest < ActionView::TestCase
|
|||
assert_select 'input[type=radio][value=Carlos][checked=checked]'
|
||||
end
|
||||
|
||||
test 'input should accept html options as the last element of collection' do
|
||||
with_input_for @user, :name, :radio_buttons, collection: [['Jose', 'jose', class: 'foo']]
|
||||
assert_select 'input.foo[type=radio][value=jose]'
|
||||
end
|
||||
|
||||
test 'input should allow using a collection with text/value arrays' do
|
||||
with_input_for @user, :name, :radio_buttons, collection: [['Jose', 'jose'], ['Carlos', 'carlos']]
|
||||
assert_select 'input[type=radio][value=jose]'
|
||||
|
|
|
@ -56,6 +56,12 @@ class CollectionSelectInputTest < ActionView::TestCase
|
|||
assert_select 'select option[selected=selected]', 'Carlos'
|
||||
end
|
||||
|
||||
test 'input should accept html options as the last element of collection' do
|
||||
with_input_for @user, :name, :select, collection: [['Jose', class: 'foo']]
|
||||
assert_select 'select.select#user_name'
|
||||
assert_select 'select option.foo', 'Jose'
|
||||
end
|
||||
|
||||
test 'input should mark the selected value also when using integers' do
|
||||
@user.age = 18
|
||||
with_input_for @user, :age, :select, collection: 18..60
|
||||
|
|
Loading…
Reference in New Issue