This module creates SimpleForm wrappers around default form_for and fields_for.
Example:
simple_form_for @user do |f| f.input :name, :hint => 'My hint' end
Override the default ActiveRecordHelper behaviour of wrapping the input. This gets taken care of semantically by adding an error class to the wrapper tag containing the input.
# File lib/simple_form/action_view_extensions/form_helper.rb, line 33 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 with_simple_form_field_error_proc do fields_for(record_name, record_object, options, &block) end end
# File lib/simple_form/action_view_extensions/form_helper.rb, line 20 def simple_form_for(record, options={}, &block) options[:builder] ||= SimpleForm::FormBuilder options[:html] ||= {} unless options[:html].key?(:novalidate) options[:html][:novalidate] = !SimpleForm.browser_validations end options[:html][:class] = [SimpleForm.form_class, simple_form_css_class(record, options)].compact.join(" ") with_simple_form_field_error_proc do form_for(record, options, &block) end end
# File lib/simple_form/action_view_extensions/form_helper.rb, line 54 def simple_form_css_class(record, options) html_options = options[:html] as = options[:as] if html_options.key?(:class) html_options[:class] elsif record.is_a?(String) || record.is_a?(Symbol) as || record else record = record.last if record.is_a?(Array) action = record.respond_to?(:persisted?) && record.persisted? ? :edit : :new as ? "#{action}_#{as}" : dom_class(record, action) end end
# File lib/simple_form/action_view_extensions/form_helper.rb, line 44 def with_simple_form_field_error_proc default_field_error_proc = ::ActionView::Base.field_error_proc begin ::ActionView::Base.field_error_proc = FIELD_ERROR_PROC yield ensure ::ActionView::Base.field_error_proc = default_field_error_proc end end