diff --git a/actionpack/lib/action_view/helpers/form_tag_helper.rb b/actionpack/lib/action_view/helpers/form_tag_helper.rb
index 208bf91dd4..7492348c50 100644
--- a/actionpack/lib/action_view/helpers/form_tag_helper.rb
+++ b/actionpack/lib/action_view/helpers/form_tag_helper.rb
@@ -62,7 +62,7 @@ module ActionView
# #
#
# select_tag "colors", "", :multiple => true
- # # =>
#
# select_tag "access", "", :multiple => true, :class => 'form_input'
- # # =>
+ # # =>
# #
#
# select_tag "destination", "", :disabled => true
# # =>
# #
def select_tag(name, option_tags = nil, options = {})
- content_tag :select, option_tags, { "name" => name, "id" => name }.update(options.stringify_keys)
+ html_name = (options[:multiple] == true && !name.to_s.ends_with?("[]")) ? "#{name}[]" : name
+ content_tag :select, option_tags, { "name" => html_name, "id" => name }.update(options.stringify_keys)
end
# Creates a standard text field; use these text fields to input smaller chunks of text like a username
diff --git a/actionpack/test/template/form_tag_helper_test.rb b/actionpack/test/template/form_tag_helper_test.rb
index ad8baef5e4..1849a61f2f 100644
--- a/actionpack/test/template/form_tag_helper_test.rb
+++ b/actionpack/test/template/form_tag_helper_test.rb
@@ -211,7 +211,8 @@ class FormTagHelperTest < ActionView::TestCase
def test_boolean_optios
assert_dom_equal %(), check_box_tag("admin", 1, true, 'disabled' => true, :readonly => "yes")
assert_dom_equal %(), check_box_tag("admin", 1, true, :disabled => false, :readonly => nil)
- assert_dom_equal %(), select_tag("people", "", :multiple => true)
+ assert_dom_equal %(), select_tag("people", "", :multiple => true)
+ assert_dom_equal %(), select_tag("people[]", "", :multiple => true)
assert_dom_equal %(), select_tag("people", "", :multiple => nil)
end