Skip to content
Browse files

Merge pull request #12317 from nashby/collection-label-namespace

handle `:namespace` form option in collection labels
Conflicts:
	actionview/CHANGELOG.md
  • Loading branch information...
1 parent b02b67b commit 21b000abc71d68dfb5478d40781eff25f38f0bfd @rafaelfranca rafaelfranca committed Sep 22, 2013
View
4 actionpack/CHANGELOG.md
@@ -1,5 +1,9 @@
## unreleased ##
+* Handle `:namespace` form option in collection labels
+
+ *Vasiliy Ermolovich*
+
* Fix an issue where router can't recognize downcased url encoding path.
Fixes #12269
View
3 actionpack/lib/action_view/helpers/tags/collection_helpers.rb
@@ -18,7 +18,8 @@ def initialize(template_object, object_name, method_name, object,
end
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
View
1 actionpack/lib/action_view/helpers/tags/label.rb
@@ -30,6 +30,7 @@ def render(&block)
add_default_name_and_id_for_value(tag_value, name_and_id)
options.delete("index")
options.delete("namespace")
+ options.delete("multiple")
options["for"] = name_and_id["id"] unless options.key?("for")
if block_given?
View
36 actionpack/test/template/form_helper_test.rb
@@ -1282,6 +1282,24 @@ def post.id; 1; end
assert_dom_equal expected, output_buffer
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
post = Post.new
def post.tag_ids; [1, 3]; end
@@ -1361,6 +1379,24 @@ def post.id; 1; end
assert_dom_equal expected, output_buffer
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
Post.send :attr_accessor, :file

0 comments on commit 21b000a

Please sign in to comment.
Something went wrong with that request. Please try again.