module Formalism::Form::Fields
Extend some module or class with this module for fields
Public Instance Methods
fields(for_merge: false)
click to toggle source
# File lib/formalism/form/fields.rb, line 108 def fields(for_merge: false) @fields ||= {} return @fields unless for_merge select_for_merge(:fields) end
to_params()
click to toggle source
# File lib/formalism/form/fields.rb, line 116 def to_params fields.merge( nested_forms.each_with_object({}) do |(name, nested_form), result| result.merge! nested_form_to_params name, nested_form end ) end
Private Instance Methods
fields_and_nested_forms(for_merge: true)
click to toggle source
# File lib/formalism/form/fields.rb, line 130 def fields_and_nested_forms(for_merge: true) merging_nested_forms = for_merge ? select_for_merge(:nested_forms) : nested_forms fields(for_merge: for_merge).merge( merging_nested_forms .map { |name, _nested_form| [name, public_send(name)] } .to_h ) end
nested_form_to_params(name_of_nested_form, nested_form)
click to toggle source
# File lib/formalism/form/fields.rb, line 148 def nested_form_to_params(name_of_nested_form, nested_form) { name_of_nested_form => nested_form.to_params } end
nested_forms()
click to toggle source
# File lib/formalism/form/fields.rb, line 126 def nested_forms @nested_forms ||= {} end
select_for_merge(type)
click to toggle source
# File lib/formalism/form/fields.rb, line 141 def select_for_merge(type) send(type).select do |name, value| merge = self.class.fields_and_nested_forms[name].fetch(:merge, true) merge.is_a?(Proc) ? instance_exec(value, &merge) : merge end end