diff --git a/actionview/lib/action_view/helpers/form_tag_helper.rb b/actionview/lib/action_view/helpers/form_tag_helper.rb
index 244b341b0701..1dfb66958b55 100644
--- a/actionview/lib/action_view/helpers/form_tag_helper.rb
+++ b/actionview/lib/action_view/helpers/form_tag_helper.rb
@@ -896,16 +896,15 @@ def sanitize_to_id(name)
end
def set_default_disable_with(value, tag_options)
- return unless ActionView::Base.automatically_disable_submit_tag
- data = tag_options["data"]
+ data = tag_options.fetch("data", {})
- unless tag_options["data-disable-with"] == false || (data && data["disable_with"] == false)
+ if tag_options["data-disable-with"] == false || data["disable_with"] == false
+ data.delete("disable_with")
+ elsif ActionView::Base.automatically_disable_submit_tag
disable_with_text = tag_options["data-disable-with"]
- disable_with_text ||= data["disable_with"] if data
+ disable_with_text ||= data["disable_with"]
disable_with_text ||= value.to_s.clone
tag_options.deep_merge!("data" => { "disable_with" => disable_with_text })
- else
- data.delete("disable_with") if data
end
tag_options.delete("data-disable-with")
diff --git a/actionview/test/template/form_tag_helper_test.rb b/actionview/test/template/form_tag_helper_test.rb
index 80afed96e587..17c2fe4f79b3 100644
--- a/actionview/test/template/form_tag_helper_test.rb
+++ b/actionview/test/template/form_tag_helper_test.rb
@@ -538,6 +538,16 @@ def test_empty_submit_tag_with_opt_out
ActionView::Base.automatically_disable_submit_tag = true
end
+ def test_empty_submit_tag_with_opt_out_and_explicit_disabling
+ ActionView::Base.automatically_disable_submit_tag = false
+ assert_dom_equal(
+ %(),
+ submit_tag("Save", data: { disable_with: false })
+ )
+ ensure
+ ActionView::Base.automatically_disable_submit_tag = true
+ end
+
def test_submit_tag_having_data_disable_with_string
assert_dom_equal(
%(),