add 'include_hidden' option to select tag, closes #5402
This commit is contained in:
parent
21b69b233b
commit
54a75e1a0f
|
@ -1,5 +1,7 @@
|
|||
## Rails 4.0.0 (unreleased) ##
|
||||
|
||||
* Add `include_hidden` option to select tag. With `:include_hidden => true` select with `multiple` attribute doesn't generate hidden input with blank value. *Vasiliy Ermolovich*
|
||||
|
||||
* Removed default `size` option from the `text_field`, `search_field`, `telephone_field`, `url_field`, `email_field` helpers. *Philip Arndt*
|
||||
|
||||
* Removed default `cols` and `rows` options from the `text_area` helper. *Philip Arndt*
|
||||
|
|
|
@ -153,6 +153,8 @@ module ActionView
|
|||
# form, and parameters extraction gets the last occurrence of any repeated
|
||||
# key in the query string, that works for ordinary forms.
|
||||
#
|
||||
# In case if you don't want the helper to generate this hidden field you can specify <tt>:include_blank => false</tt> option.
|
||||
#
|
||||
def select(object, method, choices, options = {}, html_options = {})
|
||||
Tags::Select.new(object, method, self, choices, options, html_options).render
|
||||
end
|
||||
|
|
|
@ -122,7 +122,8 @@ module ActionView
|
|||
html_options = html_options.stringify_keys
|
||||
add_default_name_and_id(html_options)
|
||||
select = content_tag("select", add_options(option_tags, options, value(object)), html_options)
|
||||
if html_options["multiple"]
|
||||
|
||||
if html_options["multiple"] && options.fetch(:include_hidden) { true }
|
||||
tag("input", :disabled => html_options["disabled"], :name => html_options["name"], :type => "hidden", :value => "") + select
|
||||
else
|
||||
select
|
||||
|
|
|
@ -529,6 +529,14 @@ class FormOptionsHelperTest < ActionView::TestCase
|
|||
)
|
||||
end
|
||||
|
||||
def test_select_with_multiple_and_without_hidden_input
|
||||
output_buffer = select(:post, :category, "", {:include_hidden => false}, :multiple => true)
|
||||
assert_dom_equal(
|
||||
"<select multiple=\"multiple\" id=\"post_category\" name=\"post[category][]\"></select>",
|
||||
output_buffer
|
||||
)
|
||||
end
|
||||
|
||||
def test_select_with_multiple_and_disabled_to_add_disabled_hidden_input
|
||||
output_buffer = select(:post, :category, "", {}, :multiple => true, :disabled => true)
|
||||
assert_dom_equal(
|
||||
|
|
Loading…
Reference in New Issue