Module: ActionForm::ElementsDSL::ClassMethods

Defined in:
lib/action_form/elements_dsl.rb

Overview

rubocop:disable Style/Documentation

Instance Method Summary collapse

Instance Method Details

#element(name, &block) ⇒ Object

TODO: add support for outputless elements



26
27
28
29
30
31
32
# File 'lib/action_form/elements_dsl.rb', line 26

def element(name, &block)
  elements[name] = Class.new(ActionForm::Element)
  elements[name].class_eval(&block)
  define_singleton_method(:"#{name}_element") do |klass = nil, &block|
    update_element_definition(name, klass, &block)
  end
end

#elementsObject



21
22
23
# File 'lib/action_form/elements_dsl.rb', line 21

def elements
  @elements ||= {}
end

#many(name, default: nil, &block) ⇒ Object



34
35
36
37
38
39
40
41
42
43
# File 'lib/action_form/elements_dsl.rb', line 34

def many(name, default: nil, &block)
  subform_definition = Class.new(ActionForm::SubformsCollection)
  subform_definition.host_class = self
  subform_definition.class_eval(&block) if block
  elements[name] = subform_definition
  elements[name].default = default if default
  define_singleton_method(:"#{name}_subforms") do |klass = nil, default: nil, &block|
    update_element_definition(name, klass, default: default, &block)
  end
end

#subform(name, default: nil, &block) ⇒ Object



45
46
47
48
49
50
51
52
# File 'lib/action_form/elements_dsl.rb', line 45

def subform(name, default: nil, &block)
  elements[name] = Class.new(subform_class)
  elements[name].class_eval(&block)
  elements[name].default = default if default
  define_singleton_method(:"#{name}_subform") do |klass = nil, default: nil, &block|
    update_element_definition(name, klass, default: default, &block)
  end
end