Module: Formation::Form

Defined in:
lib/formation/form.rb

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



67
68
69
# File 'lib/formation/form.rb', line 67

def self.included(base)
  base.extend(ClassMethods)
end

Instance Method Details

#elementsObject



71
72
73
# File 'lib/formation/form.rb', line 71

def elements
  self.class.elements
end

#errorsObject



75
76
77
# File 'lib/formation/form.rb', line 75

def errors
  @errors ||= []
end

#fieldsObject



79
80
81
82
83
84
# File 'lib/formation/form.rb', line 79

def fields
  fields = elements.map do |element|
    element.field? ? element : element.fields
  end
  fields.flatten
end

#submit(params) ⇒ Object



86
87
88
89
90
91
92
93
94
95
96
97
98
99
# File 'lib/formation/form.rb', line 86

def submit(params)
  @submitted = true
  errors.clear
  fields.each do |field|
    field.value = extract_value_from_params(field.name, params)
    if field.required? && (field.value.nil? || field.value.empty?)
      errors << "#{field.label} is required"
    end
  end
  validators.each do |validator|
    send "#{validator}"
  end
  self
end

#valid?Boolean

Returns:

  • (Boolean)


101
102
103
# File 'lib/formation/form.rb', line 101

def valid?
  !errors.any?
end

#validatorsObject



105
106
107
# File 'lib/formation/form.rb', line 105

def validators
  self.class.validators
end

#value_for(name) ⇒ Object



109
110
111
# File 'lib/formation/form.rb', line 109

def value_for(name)
  @values[name.to_s]
end

#valuesObject



113
114
115
# File 'lib/formation/form.rb', line 113

def values
  @values ||= {}
end