class Neewom::AbstractForm

Attributes

fields[RW]
id[RW]
persist_submit_controls[RW]
repository_klass[RW]
template[RW]

Public Class Methods

build(config) click to toggle source
# File lib/neewom/abstract_form.rb, line 9
def self.build(config)
  form = self.new
  form.id = config[:id]
  form.repository_klass = config[:repository_klass]
  form.template = config[:template]
  form.persist_submit_controls = config[:persist_submit_controls]

  form.fields = config[:fields].map do |name, field_config|
    field = Neewom::AbstractField.new

    field_config = { input: field_config } if field_config.is_a?(String)

    field.name              = name
    field.label             = field_config[:label]        
    field.input             = field_config[:input]
    field.virtual           = field_config[:virtual]
    field.validations       = field_config[:validations]
    field.collection        = field_config[:collection]
    field.collection_klass  = field_config[:collection_klass]
    field.collection_method = field_config[:collection_method]
    field.collection_params = field_config[:collection_params]
    field.label_method      = field_config[:label_method]
    field.value_method      = field_config[:value_method]
    field.input_html        = field_config[:input_html]
    field.custom_options    = field_config[:custom_options]

    field
  end

  form
end

Public Instance Methods

persisted_fields() click to toggle source
# File lib/neewom/abstract_form.rb, line 57
def persisted_fields
  persist_submit_controls ? fields : fields.reject(&:submit?)
end
store!() click to toggle source
# File lib/neewom/abstract_form.rb, line 61
def store!
  Neewom::Repository.new.store!(self)
end
submit_fields() click to toggle source
# File lib/neewom/abstract_form.rb, line 53
def submit_fields
  fields.select(&:submit?)
end
virtual_fields() click to toggle source
# File lib/neewom/abstract_form.rb, line 49
def virtual_fields
  fields.select(&:virtual)
end