1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

handle :namespace form option in collection labels

This commit is contained in:
Vasiliy Ermolovich 2013-09-22 16:37:12 +03:00
parent 8000835267
commit 0b0ac5d917
4 changed files with 43 additions and 1 deletions

View file

@ -1,3 +1,7 @@
* Handle `:namespace` form option in collection labels
*Vasiliy Ermolovich*
* Fix `form_for` when both `namespace` and `as` options are present * Fix `form_for` when both `namespace` and `as` options are present
`as` option no longer overwrites `namespace` option when generating `as` option no longer overwrites `namespace` option when generating

View file

@ -18,7 +18,8 @@ module ActionView
end end
def label(label_html_options={}, &block) def label(label_html_options={}, &block)
@template_object.label(@object_name, @sanitized_attribute_name, @text, label_html_options, &block) html_options = label_html_options.merge(@input_html_options)
@template_object.label(@object_name, @sanitized_attribute_name, @text, html_options, &block)
end end
end end

View file

@ -30,6 +30,7 @@ module ActionView
add_default_name_and_id_for_value(tag_value, name_and_id) add_default_name_and_id_for_value(tag_value, name_and_id)
options.delete("index") options.delete("index")
options.delete("namespace") options.delete("namespace")
options.delete("multiple")
options["for"] = name_and_id["id"] unless options.key?("for") options["for"] = name_and_id["id"] unless options.key?("for")
if block_given? if block_given?

View file

@ -1282,6 +1282,24 @@ class FormHelperTest < ActionView::TestCase
assert_dom_equal expected, output_buffer assert_dom_equal expected, output_buffer
end end
def test_form_with_namespace_and_with_collection_radio_buttons
post = Post.new
def post.active; false; end
form_for(post, namespace: 'foo') do |f|
concat f.collection_radio_buttons(:active, [true, false], :to_s, :to_s)
end
expected = whole_form("/posts", "foo_new_post", "new_post") do
"<input id='foo_post_active_true' name='post[active]' type='radio' value='true' />" +
"<label for='foo_post_active_true'>true</label>" +
"<input checked='checked' id='foo_post_active_false' name='post[active]' type='radio' value='false' />" +
"<label for='foo_post_active_false'>false</label>"
end
assert_dom_equal expected, output_buffer
end
def test_form_for_with_collection_check_boxes def test_form_for_with_collection_check_boxes
post = Post.new post = Post.new
def post.tag_ids; [1, 3]; end def post.tag_ids; [1, 3]; end
@ -1361,6 +1379,24 @@ class FormHelperTest < ActionView::TestCase
assert_dom_equal expected, output_buffer assert_dom_equal expected, output_buffer
end end
def test_form_with_namespace_and_with_collection_check_boxes
post = Post.new
def post.tag_ids; [1]; end
collection = [[1, "Tag 1"]]
form_for(post, namespace: 'foo') do |f|
concat f.collection_check_boxes(:tag_ids, collection, :first, :last)
end
expected = whole_form("/posts", "foo_new_post", "new_post") do
"<input checked='checked' id='foo_post_tag_ids_1' name='post[tag_ids][]' type='checkbox' value='1' />" +
"<label for='foo_post_tag_ids_1'>Tag 1</label>" +
"<input name='post[tag_ids][]' type='hidden' value='' />"
end
assert_dom_equal expected, output_buffer
end
def test_form_for_with_file_field_generate_multipart def test_form_for_with_file_field_generate_multipart
Post.send :attr_accessor, :file Post.send :attr_accessor, :file