Set views with the same input contents such as edit and new together.
The following 3 files will be prepared this time, and edit and new will have a common input form.
_form.html.erb edit.html.erb new.html.erb
If you write form_for (@profile)
in the shared form, routing will be done automatically.
In addition, the notation of the submit button is also automated, and if it is translated into Japanese, it will be written as register
and update
.
_form.html.erb Describe the form to share.
_form.html.erb
<%= form_for(@profile) do |f| %>
<div class="field">
<%= f.label :img %><br />
<%= f.file_field :img %>
<%#The error content is displayed in red below%>
<% if @profile.errors.include?(:img) %>
<p style="color: red;"><%= @profile.errors.full_messages_for(:img).first %>
<% end %>
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name, autofocus: true, autocomplete: "name" %>
<%#The error content is displayed in red below%>
<% if @profile.errors.include?(:name) %>
<p style="color: red;"><%= @profile.errors.full_messages_for(:name).first %>
<% end %>
</div>
<div class="field">
<%= f.label :age %><br />
<%= f.number_field :age, autofocus: true, autocomplete: "age" %>
<%#The error content is displayed in red below%>
<% if @profile.errors.include?(:age) %>
<p style="color: red;"><%= @profile.errors.full_messages_for(:age).first %>
<% end %>
</div>
<div class="field">
<%= f.label :male%><%= f.radio_button :sex, :male%>
<%= f.label :Female%><%= f.radio_button :sex, :Female%>
<%#The error content is displayed in red below%>
<% if @profile.errors.include?(:sex) %>
<p style="color: red;"><%= @profile.errors.full_messages_for(:sex).first %>
<% end %>
</div>
<div class="field">
<%= f.label :description %><br />
<%= f.text_area :description, autofocus: true, autocomplete: "description" %>
<%#The error content is displayed in red below%>
<% if @profile.errors.include?(:description) %>
<p style="color: red;"><%= @profile.errors.full_messages_for(:description).first %>
<% end %>
</div>
<div class="field">
<%= f.label :qualify %><br />
<%= f.text_area :qualify, autofocus: true, autocomplete: "qualify" %>
<%#The error content is displayed in red below%>
<% if @profile.errors.include?(:qualify) %>
<p style="color: red;"><%= @profile.errors.full_messages_for(:qualify).first %>
<% end %>
</div>
<div class="field">
<%= f.label :impression %><br />
<%= f.text_area :impression, autofocus: true, autocomplete: "impression" %>
<%#The error content is displayed in red below%>
<% if @profile.errors.include?(:impression) %>
<p style="color: red;"><%= @profile.errors.full_messages_for(:impression).first %>
<% end %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
edit.html.erb
Call the form to be shared by render and receive the variable from the controller with profile: @profile
.
edit.html.erb
<h1>Profile edit</h1>
<%= render 'form', profile: @profile %>
new.html.erb Call the form shared by render.
new.html.erb
<h1>Profile registration</h1>
<%= render 'form' %>
Recommended Posts