Rails biedt form_with om formulieren te genereren die zijn gekoppeld aan ActiveRecord-modellen met ingebouwde CSRF-tokenbeveiliging en RESTful-conventies.
Modelgebonden formulieren (form_with)
<%= form_with model: @user do |f| %>
<% if @user.errors.any? %>
<div class="errors">
<h2><%= pluralize(@user.errors.count, "error") %> prohibited saving:</h2>
<ul>
<% @user.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<%= f.label :name, "Full Name" %>
<%= f.text_field :name, class: "input-field" %>
<%= f.label :email %>
<%= f.email_field :email %>
<%= f.label :password %>
<%= f.password_field :password %>
<%= f.submit "Create Account", class: "btn-primary" %>
<% end %>
Veelvoorkomende invoerhelpers
| Helper | Gegenereerde HTML |
|---|---|
f.text_field :title |
<input type="text"> |
f.email_field :email |
<input type="email"> |
f.number_field :age |
<input type="number"> |
f.date_field :born_on |
<input type="date"> |
f.text_area :bio |
<textarea> |
f.check_box :active |
<input type="checkbox"> |
f.radio_button :role, "admin" |
<input type="radio"> |
f.file_field :avatar |
<input type="file"> |
f.hidden_field :token |
<input type="hidden"> |
Keuzelijsten (Selects)
<!-- Collectieselect uit ActiveRecord-query -->
<%= f.collection_select :category_id, Category.all, :id, :name, prompt: "Select category" %>
<!-- Statische keuzelijst -->
<%= f.select :role, [["Admin", "admin"], ["Member", "member"]], include_blank: true %>
Geneste attributen (fields_for)
<%= form_with model: @author do |f| %>
<%= f.text_field :name %>
<%= f.fields_for :profile do |profile_fields| %>
<%= profile_fields.text_field :twitter_handle %>
<%= profile_fields.text_area :bio %>
<% end %>
<%= f.submit %>
<% end %>