diff options
author | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2013-10-24 18:02:19 -0200 |
---|---|---|
committer | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2013-10-24 18:02:19 -0200 |
commit | 6c570648ad93180f35a3c5a096d191871ee06546 (patch) | |
tree | bd80f46695b40b1902f75cfdf02e5523142cc7e6 /actionview | |
parent | 074c155bf60fa4b68db8b7253e1fa8077b4f2fe7 (diff) | |
parent | e6e0579defcfcf94ef1c4c1c7659f374a5335cdb (diff) | |
download | rails-6c570648ad93180f35a3c5a096d191871ee06546.tar.gz rails-6c570648ad93180f35a3c5a096d191871ee06546.tar.bz2 rails-6c570648ad93180f35a3c5a096d191871ee06546.zip |
Merge pull request #10471 from andyw8/button_to_params
Add params option for button_to
Conflicts:
actionpack/CHANGELOG.md
Diffstat (limited to 'actionview')
-rw-r--r-- | actionview/lib/action_view/helpers/url_helper.rb | 7 | ||||
-rw-r--r-- | actionview/test/template/url_helper_test.rb | 7 |
2 files changed, 14 insertions, 0 deletions
diff --git a/actionview/lib/action_view/helpers/url_helper.rb b/actionview/lib/action_view/helpers/url_helper.rb index 2f5246f42a..8b78bd32e0 100644 --- a/actionview/lib/action_view/helpers/url_helper.rb +++ b/actionview/lib/action_view/helpers/url_helper.rb @@ -214,6 +214,7 @@ module ActionView # * <tt>:form</tt> - This hash will be form attributes # * <tt>:form_class</tt> - This controls the class of the form within which the submit button will # be placed + # * <tt>:params</tt> - Hash of parameters to be rendered as hidden fields within the form. # # ==== Data attributes # @@ -288,6 +289,7 @@ module ActionView url = options.is_a?(String) ? options : url_for(options) remote = html_options.delete('remote') + params = html_options.delete('params') method = html_options.delete('method').to_s method_tag = BUTTON_TAG_METHOD_VERBS.include?(method) ? method_tag(method) : ''.html_safe @@ -311,6 +313,11 @@ module ActionView end inner_tags = method_tag.safe_concat(button).safe_concat(request_token_tag) + if params + params.each do |name, value| + inner_tags.safe_concat tag(:input, type: "hidden", name: name, value: value.to_param) + end + end content_tag('form', content_tag('div', inner_tags), form_options) end diff --git a/actionview/test/template/url_helper_test.rb b/actionview/test/template/url_helper_test.rb index e3440915a4..deba33510a 100644 --- a/actionview/test/template/url_helper_test.rb +++ b/actionview/test/template/url_helper_test.rb @@ -161,6 +161,13 @@ class UrlHelperTest < ActiveSupport::TestCase ) end + def test_button_to_with_params + assert_dom_equal( + %{<form action="http://www.example.com" class="button_to" method="post"><div><input type="submit" value="Hello" /><input type="hidden" name="foo" value="bar" /><input type="hidden" name="baz" value="quux" /></div></form>}, + button_to("Hello", "http://www.example.com", params: {foo: :bar, baz: "quux"}) + ) + end + def test_link_tag_with_straight_url assert_dom_equal %{<a href="http://www.example.com">Hello</a>}, link_to("Hello", "http://www.example.com") end |