Module: Formation::Form
- Defined in:
- lib/formation/form.rb
Defined Under Namespace
Modules: ClassMethods
Class Method Summary collapse
Instance Method Summary collapse
- #elements ⇒ Object
- #errors ⇒ Object
- #fields ⇒ Object
- #submit(params) ⇒ Object
- #valid? ⇒ Boolean
- #validators ⇒ Object
- #value_for(name) ⇒ Object
- #values ⇒ Object
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
#elements ⇒ Object
71 72 73 |
# File 'lib/formation/form.rb', line 71 def elements self.class.elements end |
#errors ⇒ Object
75 76 77 |
# File 'lib/formation/form.rb', line 75 def errors @errors ||= [] end |
#fields ⇒ Object
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
101 102 103 |
# File 'lib/formation/form.rb', line 101 def valid? !errors.any? end |
#validators ⇒ Object
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 |
#values ⇒ Object
113 114 115 |
# File 'lib/formation/form.rb', line 113 def values @values ||= {} end |