Permalink
Browse files

Merge pull request #5414 from nashby/select-hidden-input

add 'include_hidden' option to select tag, closes #5402
  • Loading branch information...
2 parents dbdbe96 + 54a75e1 commit cb7d19b66badfbd1846c195913419c331701074e @drogus drogus committed Mar 13, 2012
@@ -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 FormOptionsHelper
# 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.
@brunoenten
brunoenten Nov 9, 2012

Isn't it supposed to read "include_hidden" instead of "include_blank" here ?

@steveklabnik
steveklabnik Nov 9, 2012 Member

Pull request submitted: #8153.

+ #
def select(object, method, choices, options = {}, html_options = {})
Tags::Select.new(object, method, self, choices, options, html_options).render
end
@@ -122,7 +122,8 @@ def select_content_tag(option_tags, options, html_options)
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 @@ def test_select_with_multiple_to_add_hidden_input
)
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(

0 comments on commit cb7d19b

Please sign in to comment.