提交 3a210da6 编写于 作者: C Carlos Antonio da Silva

Merge pull request #9616 from exviva/multiple_select_name_double_square_brackets

Fix incorrectly appended square brackets to a multiple select box

Before:

    select(:category, [], {}, {:multiple => true, :name => "post[category][]"})
    # => <select name="post[category][][]" ...>

After:

    select(:category, [], {}, {:multiple => true, :name => "post[category][]"})
    # => <select name="post[category][]" ...>
## Rails 4.0.0 (unreleased) ## ## Rails 4.0.0 (unreleased) ##
* Fix incorrectly appended square brackets to a multiple select box
if an explicit name has been given and it already ends with "[]"
Before:
select(:category, [], {}, multiple: true, name: "post[category][]")
# => <select name="post[category][][]" ...>
After:
select(:category, [], {}, multiple: true, name: "post[category][]")
# => <select name="post[category][]" ...>
*Olek Janiszewski*
* Fixed regression when using `assert_template` to verify files sent using * Fixed regression when using `assert_template` to verify files sent using
`render file: 'README.md'`. `render file: 'README.md'`.
Fixes #9464. Fixes #9464.
......
...@@ -84,7 +84,7 @@ def add_default_name_and_id(options) ...@@ -84,7 +84,7 @@ def add_default_name_and_id(options)
options["id"] = options.fetch("id"){ tag_id } options["id"] = options.fetch("id"){ tag_id }
end end
options["name"] += "[]" if options["multiple"] options["name"] += "[]" if options["multiple"] && !options["name"].ends_with?("[]")
options["id"] = [options.delete('namespace'), options["id"]].compact.join("_").presence options["id"] = [options.delete('namespace'), options["id"]].compact.join("_").presence
end end
......
...@@ -575,6 +575,14 @@ def test_select_with_multiple_and_without_hidden_input ...@@ -575,6 +575,14 @@ def test_select_with_multiple_and_without_hidden_input
) )
end end
def test_select_with_multiple_and_with_explicit_name_ending_with_brackets
output_buffer = select(:post, :category, [], {include_hidden: false}, multiple: true, name: 'post[category][]')
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 def test_select_with_multiple_and_disabled_to_add_disabled_hidden_input
output_buffer = select(:post, :category, "", {}, :multiple => true, :disabled => true) output_buffer = select(:post, :category, "", {}, :multiple => true, :disabled => true)
assert_dom_equal( assert_dom_equal(
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册