app/helpers/manage/bootstrap_form_helper.rb
module Manage module BootstrapFormHelperSimilar blocks of code found in 2 locations. Consider refactoring. def bs_vertical_simple_form(path, options = {}, &block) bootstrap_options = { wrapper: :bootstrap_vertical_form, wrapper_mappings: {Align the elements of a hash literal if they span more than one line. boolean: :bootstrap_vertical_boolean,Align the elements of a hash literal if they span more than one line. check_boxes: :bootstrap_vertical_collection,Align the elements of a hash literal if they span more than one line. date: :bootstrap_vertical_multi_select,Align the elements of a hash literal if they span more than one line. datetime: :bootstrap_vertical_multi_select,Align the elements of a hash literal if they span more than one line. file: :bootstrap_vertical_file, radio_buttons: :bootstrap_vertical_collection,Align the elements of a hash literal if they span more than one line. range: :bootstrap_vertical_range,Align the elements of a hash literal if they span more than one line. time: :bootstrap_vertical_multi_select } } options = options.deep_merge(bootstrap_options) patch_simple_form_config do simple_form_for(path, options, &block) end end Similar blocks of code found in 2 locations. Consider refactoring. def bs_horizontal_simple_form_for(path, options = {}, &block) bootstrap_options = { wrapper: :bootstrap_horizontal_form, wrapper_mappings: {Align the elements of a hash literal if they span more than one line. boolean: :bootstrap_horizontal_boolean,Align the elements of a hash literal if they span more than one line. check_boxes: :bootstrap_horizontal_collection,Align the elements of a hash literal if they span more than one line. date: :bootstrap_horizontal_multi_select,Align the elements of a hash literal if they span more than one line. datetime: :bootstrap_horizontal_multi_select,Align the elements of a hash literal if they span more than one line. file: :bootstrap_horizontal_file, radio_buttons: :bootstrap_horizontal_collection,Align the elements of a hash literal if they span more than one line. range: :bootstrap_horizontal_range,Align the elements of a hash literal if they span more than one line. time: :bootstrap_horizontal_multi_select } } options = options.deep_merge(bootstrap_options) patch_simple_form_config do simple_form_for(path, options, &block) end end private def set_config(key, value) @saved_values ||= {} @saved_values[key] = SimpleForm.send(key) SimpleForm.send("#{key}=", value) end def restore_config @saved_values.keys.each do |key| value = @saved_values.delete(key) SimpleForm.send("#{key}=", value) end end def patch_simple_form_config # Values copied from the top of # https://github.com/rafaelfranca/simple_form-bootstrap/blob/master/config/initializers/simple_form_bootstrap.rb # Default class for buttons set_config(:button_class, 'btn') # Define the default class of the input wrapper of the boolean input. set_config(:boolean_label_class, 'form-check-label') # How the label text should be generated altogether with the required text. set_config(:label_text, ->(label, required, _explicit_label) { "#{label} #{required}" }) # Define the way to render check boxes / radio buttons with labels. set_config(:boolean_style, :inline) # You can wrap each item in a collection of radio/check boxes with a tag set_config(:item_wrapper_tag, :div) # Defines if the default input wrapper class should be included in radio # collection wrappers. set_config(:include_default_input_wrapper_class, false) # CSS class to add for error notification helper. set_config(:error_notification_class, 'alert alert-danger') # Method used to tidy up errors. Specify any Rails Array method. # :first lists the first message for each field. # :to_sentence to list all errors for each field. set_config(:error_method, :to_sentence) # add validation classes to `input_field` set_config(:input_field_error_class, 'is-invalid') # set_config(:input_field_valid_class, 'is-valid') yield ensure restore_config end endend