diff --git a/lib/generators/simple_form/templates/config/initializers/simple_form.rb b/lib/generators/simple_form/templates/config/initializers/simple_form.rb index d26878480..7e9a7a689 100644 --- a/lib/generators/simple_form/templates/config/initializers/simple_form.rb +++ b/lib/generators/simple_form/templates/config/initializers/simple_form.rb @@ -173,4 +173,7 @@ # Defines validation classes to the input_field. By default it's nil. # config.input_field_valid_class = 'is-valid' # config.input_field_error_class = 'is-invalid' + + # Defines the default form builder when more customization is needed. + # config.default_builder = 'SimpleForm::OtherCSSFramework::FormBuilder' end diff --git a/lib/simple_form.rb b/lib/simple_form.rb index e813398a3..08a8920b0 100644 --- a/lib/simple_form.rb +++ b/lib/simple_form.rb @@ -213,6 +213,9 @@ def self.configured? #:nodoc: mattr_accessor :input_field_valid_class @@input_field_valid_class = nil + mattr_accessor :default_builder + @@default_builder = 'SimpleForm::FormBuilder' + # Retrieves a given wrapper def self.wrapper(name) @@wrappers[name.to_s] or raise WrapperNotFound, "Couldn't find wrapper with name #{name}" diff --git a/lib/simple_form/action_view_extensions/builder.rb b/lib/simple_form/action_view_extensions/builder.rb index 7af4ecc08..2c453cbe4 100644 --- a/lib/simple_form/action_view_extensions/builder.rb +++ b/lib/simple_form/action_view_extensions/builder.rb @@ -23,7 +23,7 @@ def simple_fields_for(*args, &block) if self.class < ActionView::Helpers::FormBuilder options[:builder] ||= self.class else - options[:builder] ||= SimpleForm::FormBuilder + options[:builder] ||= SimpleForm.default_builder.constantize end fields_for(*args, options, &block) end diff --git a/lib/simple_form/action_view_extensions/form_helper.rb b/lib/simple_form/action_view_extensions/form_helper.rb index 6981aa983..8b404fc64 100644 --- a/lib/simple_form/action_view_extensions/form_helper.rb +++ b/lib/simple_form/action_view_extensions/form_helper.rb @@ -12,7 +12,7 @@ module ActionViewExtensions module FormHelper def simple_form_for(record, options = {}, &block) - options[:builder] ||= SimpleForm::FormBuilder + options[:builder] ||= SimpleForm.default_builder.constantize options[:html] ||= {} unless options[:html].key?(:novalidate) options[:html][:novalidate] = !SimpleForm.browser_validations @@ -30,7 +30,7 @@ def simple_form_for(record, options = {}, &block) def simple_fields_for(record_name, record_object = nil, options = {}, &block) options, record_object = record_object, nil if record_object.is_a?(Hash) && record_object.extractable_options? - options[:builder] ||= SimpleForm::FormBuilder + options[:builder] ||= SimpleForm.default_builder.constantize with_simple_form_field_error_proc do fields_for(record_name, record_object, options, &block)