diff options
author | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2013-09-12 18:20:14 -0300 |
---|---|---|
committer | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2013-09-12 18:20:14 -0300 |
commit | 495daef06141706c363df3d42ca1683706f85735 (patch) | |
tree | 9d9da820873d4caa77937e6405992ce56b18e179 /actionview | |
parent | 212fcd51f9f2f5bf70782b1011e8238f8d9bdbb4 (diff) | |
parent | e18f045b6518d555f14ac84f39aa4177ea51185d (diff) | |
download | rails-495daef06141706c363df3d42ca1683706f85735.tar.gz rails-495daef06141706c363df3d42ca1683706f85735.tar.bz2 rails-495daef06141706c363df3d42ca1683706f85735.zip |
Merge pull request #12112 from adamniedzielski/fix-form-for-namespace-and-as
form_for - fix :namespace and :as options clash
Conflicts:
actionview/CHANGELOG.md
Diffstat (limited to 'actionview')
-rw-r--r-- | actionview/CHANGELOG.md | 7 | ||||
-rw-r--r-- | actionview/lib/action_view/helpers/form_helper.rb | 3 | ||||
-rw-r--r-- | actionview/test/template/form_helper_test.rb | 12 |
3 files changed, 21 insertions, 1 deletions
diff --git a/actionview/CHANGELOG.md b/actionview/CHANGELOG.md index 6b9c76eb29..53142a835e 100644 --- a/actionview/CHANGELOG.md +++ b/actionview/CHANGELOG.md @@ -1,3 +1,10 @@ +* Fix `form_for` when both `namespace` and `as` options are present + + `as` option no longer overwrites `namespace` option when generating + html id attribute of the form element + + *Adam Niedzielski* + * Fix `excerpt` when `:separator` is `nil`. *Paul Nikitochkin* diff --git a/actionview/lib/action_view/helpers/form_helper.rb b/actionview/lib/action_view/helpers/form_helper.rb index 8a4830d887..ead7871fc5 100644 --- a/actionview/lib/action_view/helpers/form_helper.rb +++ b/actionview/lib/action_view/helpers/form_helper.rb @@ -442,10 +442,11 @@ module ActionView object = convert_to_model(object) as = options[:as] + namespace = options[:namespace] action, method = object.respond_to?(:persisted?) && object.persisted? ? [:edit, :patch] : [:new, :post] options[:html].reverse_merge!( class: as ? "#{action}_#{as}" : dom_class(object, action), - id: as ? "#{action}_#{as}" : [options[:namespace], dom_id(object, action)].compact.join("_").presence, + id: (as ? [namespace, action, as] : [namespace, dom_id(object, action)]).compact.join("_").presence, method: method ) diff --git a/actionview/test/template/form_helper_test.rb b/actionview/test/template/form_helper_test.rb index 8cca43d7ca..944884c9dd 100644 --- a/actionview/test/template/form_helper_test.rb +++ b/actionview/test/template/form_helper_test.rb @@ -1681,6 +1681,18 @@ class FormHelperTest < ActionView::TestCase assert_dom_equal expected, output_buffer end + def test_form_for_with_namespace_and_as_option + form_for(@post, namespace: 'namespace', as: 'custom_name') do |f| + concat f.text_field(:title) + end + + expected = whole_form('/posts/123', 'namespace_edit_custom_name', 'edit_custom_name', method: 'patch') do + "<input id='namespace_custom_name_title' name='custom_name[title]' type='text' value='Hello World' />" + end + + assert_dom_equal expected, output_buffer + end + def test_two_form_for_with_namespace form_for(@post, namespace: 'namespace_1') do |f| concat f.label(:title) |