From 76f99a2c7019bfc07996be92c646713a82008b21 Mon Sep 17 00:00:00 2001 From: Paco Guzman Date: Mon, 11 Oct 2010 09:02:53 +0200 Subject: [PATCH] data-disable-with in button_to helper --- actionpack/lib/action_view/helpers/url_helper.rb | 6 ++++++ actionpack/test/template/url_helper_test.rb | 21 +++++++++++++++++++++ 2 files changed, 27 insertions(+), 0 deletions(-) diff --git a/actionpack/lib/action_view/helpers/url_helper.rb b/actionpack/lib/action_view/helpers/url_helper.rb index da42d94..adf9b96 100644 --- a/actionpack/lib/action_view/helpers/url_helper.rb +++ b/actionpack/lib/action_view/helpers/url_helper.rb @@ -587,9 +587,11 @@ module ActionView html_options = html_options.stringify_keys html_options['data-remote'] = 'true' if link_to_remote_options?(options) || link_to_remote_options?(html_options) + disable_with = html_options.delete("disable_with") confirm = html_options.delete('confirm') method = html_options.delete('method') + add_disable_with_to_attributes!(html_options, disable_with) if disable_with add_confirm_to_attributes!(html_options, confirm) if confirm add_method_to_attributes!(html_options, method) if method @@ -605,6 +607,10 @@ module ActionView html_options["data-confirm"] = confirm if confirm end + def add_disable_with_to_attributes!(html_options, disable_with) + html_options["data-disable-with"] = disable_with if disable_with + end + def add_method_to_attributes!(html_options, method) html_options["rel"] = "nofollow" if method && method.to_s.downcase != "get" html_options["data-method"] = method if method diff --git a/actionpack/test/template/url_helper_test.rb b/actionpack/test/template/url_helper_test.rb index b8a7d42..a6fdf80 100644 --- a/actionpack/test/template/url_helper_test.rb +++ b/actionpack/test/template/url_helper_test.rb @@ -69,6 +69,13 @@ class UrlHelperTest < ActiveSupport::TestCase ) end + def test_button_to_with_javascript_disable_with + assert_dom_equal( + "
", + button_to("Hello", "http://www.example.com", :disable_with => "Greeting...") + ) + end + def test_button_to_with_remote_and_javascript_confirm assert_dom_equal( "
", @@ -76,6 +83,20 @@ class UrlHelperTest < ActiveSupport::TestCase ) end + def test_button_to_with_remote_and_javascript_disable_with + assert_dom_equal( + "
", + button_to("Hello", "http://www.example.com", :remote => true, :disable_with => "Greeting...") + ) + end + + def test_button_to_with_remote_and_javascript_confirm_and_javascript_disable_with + assert_dom_equal( + "
", + button_to("Hello", "http://www.example.com", :remote => true, :confirm => "Are you sure?", :disable_with => "Greeting...") + ) + end + def test_button_to_with_remote_false assert_dom_equal( "
", -- 1.7.0.4