Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

select :multiple => true suffixes the attribute name with [] unless a…

…lready suffixed. Closes #6977.

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@6078 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
  • Loading branch information...
commit ad29870c21f2f196858251831f527e52a7ef27cb 1 parent 50c1150
Jeremy Kemper jeremy authored
2  actionpack/CHANGELOG
View
@@ -1,5 +1,7 @@
*SVN*
+* select :multiple => true suffixes the attribute name with [] unless already suffixed. #6977 [nik.kakelin, ben, julik]
+
* Improve routes documentation. #7095 [zackchandler]
* mail_to :encode => 'hex' also encodes the mailto: part of the href attribute as well as the linked email when no name is given. #2061 [Jarkko Laine, pfc.pille@gmx.net]
2  actionpack/lib/action_view/helpers/form_helper.rb
View
@@ -387,7 +387,7 @@ def add_default_name_and_id(options)
options["name"] ||= tag_name_with_index(@auto_index)
options["id"] ||= tag_id_with_index(@auto_index)
else
- options["name"] ||= tag_name
+ options["name"] ||= tag_name + (options.has_key?('multiple') ? '[]' : '')
options["id"] ||= tag_id
end
end
19 actionpack/test/template/form_options_helper_test.rb
View
@@ -360,6 +360,25 @@ def test_collection_select_with_blank_and_style
)
end
+ def test_collection_select_with_multiple_option_appends_array_brackets
+ @posts = [
+ Post.new("<Abe> went home", "<Abe>", "To a little house", "shh!"),
+ Post.new("Babe went home", "Babe", "To a little house", "shh!"),
+ Post.new("Cabe went home", "Cabe", "To a little house", "shh!")
+ ]
+
+ @post = Post.new
+ @post.author_name = "Babe"
+
+ expected = "<select id=\"post_author_name\" name=\"post[author_name][]\" multiple=\"multiple\"><option value=\"\"></option>\n<option value=\"&lt;Abe&gt;\">&lt;Abe&gt;</option>\n<option value=\"Babe\" selected=\"selected\">Babe</option>\n<option value=\"Cabe\">Cabe</option></select>"
+
+ # Should suffix default name with [].
+ assert_dom_equal expected, collection_select("post", "author_name", @posts, "author_name", "author_name", { :include_blank => true }, :multiple => true)
+
+ # Shouldn't suffix custom name with [].
+ assert_dom_equal expected, collection_select("post", "author_name", @posts, "author_name", "author_name", { :include_blank => true, :name => 'post[author_name][]' }, :multiple => true)
+ end
+
def test_country_select
@post = Post.new
@post.origin = "Denmark"
Please sign in to comment.
Something went wrong with that request. Please try again.