class DefaultForm::FormBuilder

Attributes

error_css[R]
offset_css[R]
on_options[R]
origin_css[R]
params[R]
theme[R]
wrap_css[R]

Public Class Methods

new(object_name, object, template, options) click to toggle source
Calls superclass method
# File lib/default_form/form_builder.rb, line 13
def initialize(object_name, object, template, options)
  if options.key?(:theme)
    @theme = options[:theme].to_s
  else
    @theme = 'default'
  end
  set_file = Rails.root.join('config/default_form.yml').existence || RailsCom::Engine.root.join('config/default_form.yml')
  set = YAML.load_file set_file
  settings = set.fetch(theme, {})
  settings.deep_symbolize_keys!

  options[:method] = settings[:method] if !options.key?(:method) && settings.key?(:method)
  options[:local] = true # todo rails 6.2 will remove this
  options[:data] ||= {}
  if options[:data][:controller].present?
    options[:data][:controller] += ' default_valid'
  else
    options[:data][:controller] = 'default_valid'
  end

  @origin_css = settings.fetch(:origin, {}).merge options.fetch(:origin, {})
  @wrap_css = settings.fetch(:wrap, {}).merge options.fetch(:wrap, {})
  @error_css = settings.fetch(:error, {}).merge options.fetch(:error, {})
  @offset_css = settings.fetch(:offset, {}).merge options.fetch(:offset, {})
  @on_options = settings.extract! :autocomplete, :autofilter, :placeholder, :label
  @on_options.merge! options.slice(:placeholder, :label, :autocomplete, :autofilter)
  @params = template.params

  _values = Hash(params.permit(object_name => {})[object_name])
  if object.is_a?(ActiveRecord::Base)
    object.assign_attributes _values.slice(*object.attribute_names)
  end

  if options[:class].to_s.start_with?('new_', 'edit_')
    options[:class] = origin_css[:form]
  end
  options[:class] = origin_css[:form] unless options.key?(:class)

  super
end

Public Instance Methods

submit_default_value() click to toggle source
Calls superclass method
# File lib/default_form/form_builder.rb, line 54
def submit_default_value
  I18n.t "helpers.submit.#{theme}", raise: true
rescue
  super
end