diff --git a/app/controllers/spree/admin/general_settings_controller.rb b/app/controllers/spree/admin/general_settings_controller.rb index 6ca68a2a4a..9bb436d334 100644 --- a/app/controllers/spree/admin/general_settings_controller.rb +++ b/app/controllers/spree/admin/general_settings_controller.rb @@ -10,7 +10,7 @@ module Spree end def update - combine_available_units_params + merge_available_units_params params.each do |name, value| next unless Spree::Config.has_preference? name @@ -23,14 +23,9 @@ module Spree private - def combine_available_units_params - available_units = [] - params.each do |name, value| - if value == "1" && unit = name.match(/available_units_(.*)/)&.captures&.first - available_units << unit - end - end - params[:available_units] = available_units.join(",") + def merge_available_units_params + params[:available_units] = + params[:available_units].select { |unit, checked| checked == "1" }.keys.join(",") end end end diff --git a/app/views/spree/admin/general_settings/edit.html.haml b/app/views/spree/admin/general_settings/edit.html.haml index df60797254..e4e9b7d611 100644 --- a/app/views/spree/admin/general_settings/edit.html.haml +++ b/app/views/spree/admin/general_settings/edit.html.haml @@ -90,10 +90,10 @@ %fieldset.available_units.no-border-bottom %legend{:align => "center"}= t('admin.available_units') .field - - selected_units = Spree::Config[:available_units].split(",") + - available_units = Spree::Config[:available_units].split(",") - all_units.each do |unit| - - selected = selected_units.include?(unit) - = preference_field_tag("available_units_#{unit}", selected, { type: :boolean, selected: selected }) + - selected = available_units.include?(unit) + = preference_field_tag("available_units[#{unit}]", selected, { type: :boolean, selected: selected }) = label_tag(unit, unit.downcase) + tag(:br) .form-buttons.filter-actions.actions{"data-hook" => "buttons"}