From 93deb54e3b783570ef3ff4c6af89e3dd0b16b4ce Mon Sep 17 00:00:00 2001 From: Larry Reid Date: Tue, 14 Nov 2023 19:56:13 -0800 Subject: [PATCH] Draft: Is this what we meant? --- .../inputs/collection_check_boxes.rb | 17 +++++++++++++++-- test/bootstrap_checkbox_test.rb | 13 ------------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/lib/bootstrap_form/inputs/collection_check_boxes.rb b/lib/bootstrap_form/inputs/collection_check_boxes.rb index e70a4156..b3b8fcca 100644 --- a/lib/bootstrap_form/inputs/collection_check_boxes.rb +++ b/lib/bootstrap_form/inputs/collection_check_boxes.rb @@ -7,7 +7,7 @@ module CollectionCheckBoxes include Base include InputsCollection - included do + included do # rubocop:disable Metrics/BlockLength def collection_check_boxes_with_bootstrap(*args) html = inputs_collection(*args) do |name, value, options| options[:multiple] = true @@ -26,7 +26,20 @@ def collection_check_boxes_with_bootstrap(*args) def field_name(method, *methods, multiple: false, index: @options[:index]) object_name = @options.fetch(:as) { @object_name } - @template.field_name(object_name, method, *methods, index: index, multiple: multiple) + field_name_shim(object_name, method, *methods, index: index, multiple: multiple) + end + + private + + def field_name_shim(object_name, method_name, *method_names, multiple: false, index: nil) + names = method_names.map! { |name| "[#{name}]" }.join + if object_name.blank? + "#{method_name}#{names}#{multiple ? '[]' : ''}" + elsif index + "#{object_name}[#{index}][#{method_name}]#{names}#{multiple ? '[]' : ''}" + else + "#{object_name}[#{method_name}]#{names}#{multiple ? '[]' : ''}" + end end end end diff --git a/test/bootstrap_checkbox_test.rb b/test/bootstrap_checkbox_test.rb index c727da7d..7fb61ce6 100644 --- a/test/bootstrap_checkbox_test.rb +++ b/test/bootstrap_checkbox_test.rb @@ -473,19 +473,6 @@ class BootstrapCheckboxTest < ActionView::TestCase :street, checked: collection) end - if Rails::VERSION::MAJOR < 7 - def field_name(object_name, method_name, *method_names, multiple: false, index: nil) - names = method_names.map! { |name| "[#{name}]" }.join - if object_name.blank? - "#{method_name}#{names}#{multiple ? '[]' : ''}" - elsif index - "#{object_name}[#{index}][#{method_name}]#{names}#{multiple ? '[]' : ''}" - else - "#{object_name}[#{method_name}]#{names}#{multiple ? '[]' : ''}" - end - end - end - test "collection_check_boxes renders with include_hidden options correctly" do collection = [Address.new(id: 1, street: "Foo"), Address.new(id: 2, street: "Bar")] expected = <<~HTML