Kemal::Form
Kemal::Form contains classes and macros that makes working with forms
in your Kemal application fun and easy.
require "kemal"
require "kemal-form"
class LoginForm < Kemal::Form
field username : Kemal::Form::TextField,
validators: [Kemal::FormValidator::Required.new]
field password : Kemal::Form::PasswordField,
validators: [
Kemal::FormValidator::Length.new(min: 6)
]
button login : Kemal::Form::SubmitButton,
text: "Login"
end
get "/login" do
form = LoginForm.new
render "src/views/login.ecr"
end
post "/login" do |env|
form = LoginForm.new env
if form.valid?
puts "You are now logged in"
env.redirect "/"
next
end
render "src/views/login.ecr"
end
Constants
VERSION = "0.4.1"
Constructors
Initializes a new form.
class MyForm < Kemal::Form
end
get "/" do
form = MyForm.new
render "src/views/index.ecr"
end
post "/" do |env|
form = MyForm.new env
# ...
render "src/views/index.ecr"
Instance methods
add_error(message : String)
Adds error to the form.
post "/login" do |env|
form = LoginForm.new env
form.valid?
if wrong_password_entered
form.add_error "Invalid username or password"
...
end
...
end
...
end
valid?
Returns true if the form is valid, false otherwise.
class MyForm < Kemal::Form
end
post "/" do |env|
form = MyForm.new env
if form.valid?
puts "form is valid"
env.redirect "/"
next
end
render "src/views/index.ecr"
end
Nested types
- Kemal::Form::Button
- Kemal::Form::CheckboxField
- Kemal::Form::EmailField
- Kemal::Form::Field
- Kemal::Form::FormError
- Kemal::Form::HiddenField
- Kemal::Form::Label
- Kemal::Form::NumberField
- Kemal::Form::PasswordField
- Kemal::Form::RadioField
- Kemal::Form::SelectField
- Kemal::Form::SubmitButton
- Kemal::Form::TextAreaField
- Kemal::Form::TextField
- Kemal::Form::ValidationError