Why Superform?
Forms are a critical part of web applications and traditionally have been difficult to customize in Rails, especially with Phlex. Superform is a powerful form builder library built completely on Phlex that makes it possible to build different types of forms in your apps and use them with ease.
Thereβs a FormBuilder
library built into Rails thatβs a worse implementation of Phlex at the core of Rails form builders.
If you wanted to wrap all of your form fields in a <div>
with a class of form-field
, you could create a custom form builder like this:
π Unlock content
Pre-order this course to unlock this video, source code, and content.
β βββββββββββββββββββββββββββββββββββ
class WrappedFormBuilder < ββββββββββ::βββββββ::βββββββββββ
βββββββββββββ = %i[
text_field password_field email_field telephone_field
number_field search_field url_field text_area select
date_select datetime_select time_select
]
βββββββββββββ.ββββ do |βββββββββββ|
βββββββββββββ(βββββββββββ) do |βββββ, *ββββ, **βββββββ|
βββββββββ.βββββββββββ(:div, class: "form-field") do
super(βββββ, *ββββ, **βββββββ)
end
end
end
end
ββββ ββββ βββ ββββ ββ ββββββ ββββ ββββ βββ ββββ ββ ββββ ββ βββββββββββββββββββ
<%= βββββββββ model: βββββ, builder: ββββββββββββββββββ do |ββββ| %>
<%= ββββ.ββββββββββ :name %>
<%= ββββ.βββββββββββ :email %>
<%= ββββ.ββββββββββββββ :password %>
<%= ββββ.ββββββ "Sign Up" %>
<% end %>
ββββ βββββββββ ββββ ββββββ ββββ βββ ββββββββββ ββββ βββββ ββ βββββββ βββ ββββββββββ βββ βββββββ βββββββββββββ βββββββ ββ βββββββββββ βββ βββββββββ
ββββ ββββ ββ βββ ββββ βββ ββ βββββββ βββββ ββ ββββββ
Superform
βββββββββββ βββ ββββββ ββ ββββ ββββββ βββββββββ ββββ βββ βββββ ββββ ββββββββ ββ βββββ ββββββββ βββ βββββββββ βββ ββββ βββ βββ βββ ββ βββββ β ββββ ββββββ ββββ βββββββ ββββββ ββββββββββ
ββββββ βββ ββββββ ββββ ββββ ββ β ββββββ βββ βββ βββ ββ ββ βββββββββββββββββββββββββ
class UserForm < βββββββββββββββ
def βββββββββββββ
βββ βββββ(:name).βββββ(type: :text)
βββ βββββ(:email).βββββ(type: :email)
βββ βββββ(:password).βββββ(type: :password)
ββββββ("Sign Up")
end
end
ββββββ ββββ ββ βββββ ββββ ββ ββββ
<%= ββββββ ββββββββ.βββ βββββ %>
βββ ββββββββββ βββ βββββ ββββββ ββββ ββββ ββ βββ ββββββββββββ βββ βββββββββββββ ββββββ