diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 1b259b44b..db4b3efb4 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -1306,6 +1306,13 @@ module ApplicationHelper fields_for(*args, &proc) end + def form_tag_html(html_options) + # Set a randomized name attribute on all form fields by default + # as a workaround to https://bugzilla.mozilla.org/show_bug.cgi?id=1279253 + html_options['name'] ||= "#{html_options['id'] || 'form'}-#{SecureRandom.hex(4)}" + super + end + # Render the error messages for the given objects def error_messages_for(*objects) objects = objects.map {|o| o.is_a?(String) ? instance_variable_get("@#{o}") : o}.compact diff --git a/test/helpers/application_helper_test.rb b/test/helpers/application_helper_test.rb index f46720120..9abf47fa7 100644 --- a/test/helpers/application_helper_test.rb +++ b/test/helpers/application_helper_test.rb @@ -1807,6 +1807,15 @@ RAW assert_equal '0.75', html_hours('0.75') end + def test_form_for_includes_name_attribute + assert_match(/name="new_issue-[a-z0-9]{8}"/, form_for(Issue.new){}) + end + + def test_labelled_form_for_includes_name_attribute + assert_match(/name="new_issue-[a-z0-9]{8}"/, labelled_form_for(Issue.new){}) + end + + private def wiki_links_with_special_characters