From 60bbbce7a302c18d3ab8b7450f94cabc9bbea835 Mon Sep 17 00:00:00 2001 From: Sergey Prikhodko Date: Mon, 3 Mar 2014 12:23:51 +0400 Subject: fixes default attributes for button_tag --- .../lib/action_view/helpers/form_tag_helper.rb | 20 +++++++++++++------- actionview/test/template/form_tag_helper_test.rb | 5 +++++ 2 files changed, 18 insertions(+), 7 deletions(-) (limited to 'actionview') diff --git a/actionview/lib/action_view/helpers/form_tag_helper.rb b/actionview/lib/action_view/helpers/form_tag_helper.rb index 80f066b3be..bb38ae8555 100644 --- a/actionview/lib/action_view/helpers/form_tag_helper.rb +++ b/actionview/lib/action_view/helpers/form_tag_helper.rb @@ -469,13 +469,13 @@ module ActionView # # => # def button_tag(content_or_options = nil, options = nil, &block) - options = content_or_options if block_given? && content_or_options.is_a?(Hash) - options ||= {} - options = options.stringify_keys - - options.reverse_merge! 'name' => 'button', 'type' => 'submit' - - content_tag :button, content_or_options || 'Button', options, &block + if block_given? && content_or_options.is_a?(Hash) + options = button_tag_options_with_defaults(content_or_options) + content_tag :button, options, &block + else + options = button_tag_options_with_defaults(options) + content_tag :button, content_or_options || 'Button', options + end end # Displays an image which when clicked will submit the form. @@ -741,6 +741,12 @@ module ActionView def sanitize_to_id(name) name.to_s.delete(']').gsub(/[^-a-zA-Z0-9:.]/, "_") end + + def button_tag_options_with_defaults(options = {}) + default_options = { 'name' => 'button', 'type' => 'submit' } + options.stringify_keys! + options.reverse_merge! default_options + end end end end diff --git a/actionview/test/template/form_tag_helper_test.rb b/actionview/test/template/form_tag_helper_test.rb index 0d5831dc6f..cf824e2733 100644 --- a/actionview/test/template/form_tag_helper_test.rb +++ b/actionview/test/template/form_tag_helper_test.rb @@ -476,6 +476,11 @@ class FormTagHelperTest < ActionView::TestCase assert_dom_equal('', output) end + def test_button_tag_defaults_with_block_and_options + output = button_tag(:name => 'temptation', :value => 'within') { content_tag(:strong, 'Do not press me') } + assert_dom_equal('', output) + end + def test_button_tag_with_confirmation assert_dom_equal( %(), -- cgit v1.2.3