Frankieforms
Form Validation
Available rules
| Rule | Options | Description |
|---|---|---|
"required" |
— | Value must be non-nil and non-empty |
"min_length" |
value: n |
At least n characters |
"max_length" |
value: n |
At most n characters |
"email" |
— | Must match word@word.word |
"min_value" |
value: n |
Integer value ≥ n |
"max_value" |
value: n |
Integer value ≤ n |
"numeric" |
— | Must be a number (int or float) |
"alpha" |
— | Letters only |
"matches_pattern" |
value: pat, message: msg |
Must match regex pattern |
Functions
validate(form, rules)
Returns a Hash of {field: error_message} pairs.
Empty hash = all valid.
stitch "frankieforms"
form = {name: "A", email: "alice@example", age: ""}
rules = {
name: [{rule: "required"}, {rule: "min_length", value: 2}],
email: [{rule: "required"}, {rule: "email"}],
age: [{rule: "required"}, {rule: "min_value", value: 18}]
}
if valid?(form, rules) == false
validate(form, rules).each do |field, msg|
puts "#{field}: #{msg}"
end
end
→ name: must be at least 2 characters
→ email: must be a valid email address
→ age: is required
valid?(form, rules)
Returns true if no errors.
stitch "frankieforms"
form = {name: "Alice", email: "alice@example", age: "25"}
rules = {
name: [{rule: "required"}, {rule: "min_length", value: 2}],
email: [{rule: "required"}, {rule: "email"}],
age: [{rule: "required"}, {rule: "min_value", value: 18}]
}
puts valid?(form, rules)
→ true