From c6c138ef86d3205101fee578092f508ef26ee5f7 Mon Sep 17 00:00:00 2001 From: Sean Doyle Date: Wed, 15 Dec 2021 17:43:04 -0500 Subject: [PATCH] Generate `[id]` for `FormBuilder#button` called with method name Follow-up to [rails/rails#43411][] (merged in [15f6113][]) By default, when generating a ` # # button(:draft, value: true) - # # => + # # => # # button do # content_tag(:strong, 'Ask me!') @@ -2606,7 +2606,7 @@ module ActionView # button(:draft, value: true) do # content_tag(:strong, "Save as draft") # end - # # => # @@ -2615,7 +2615,7 @@ module ActionView when Hash value, options = nil, value when Symbol - value, options[:name] = nil, field_name(value) + value, options = nil, { name: field_name(value), id: field_id(value) }.merge!(options.to_h) end value ||= submit_default_value diff --git a/actionview/test/template/form_helper_test.rb b/actionview/test/template/form_helper_test.rb index 430b4ac6e4..edbb964c6c 100644 --- a/actionview/test/template/form_helper_test.rb +++ b/actionview/test/template/form_helper_test.rb @@ -2607,7 +2607,19 @@ class FormHelperTest < ActionView::TestCase end expected = whole_form("/posts/123", "edit_post_123", "edit_post", method: "patch") do - %() + %() + end + + assert_dom_equal expected, output_buffer + end + + def test_button_with_method_name_and_attributes + form_for(@post) do |f| + concat f.button(:secret, value: true, id: "not_generated", name: "post[not_generated]") + end + + expected = whole_form("/posts/123", "edit_post_123", "edit_post", method: "patch") do + %() end assert_dom_equal expected, output_buffer @@ -2619,7 +2631,7 @@ class FormHelperTest < ActionView::TestCase end expected = whole_form("/posts/123", "edit_post_123", "edit_post", method: "patch") do - %() + %() end assert_dom_equal expected, output_buffer