ruby 2.5.7 Rails 5.2.4.3 OS: macOS Catalina
Dans l'état initial, il est décrit comme suit.
erb:app/views/users/registrations/new.html.erb
<h2>Sign up</h2>
<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
<%= render "users/shared/error_messages", resource: resource %>
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name, autofocus: true, autocomplete: "name" %>
</div>
<div class="field">
<%= f.label :email %><br />
<%= f.email_field :email, autofocus: true, autocomplete: "email" %>
</div>
<div class="field">
<%= f.label :password %>
<% if @minimum_password_length %>
<em>(<%= @minimum_password_length %> characters minimum)</em>
<% end %><br />
<%= f.password_field :password, autocomplete: "new-password" %>
</div>
<div class="field">
<%= f.label :password_confirmation %><br />
<%= f.password_field :password_confirmation, autocomplete: "new-password" %>
</div>
<div class="actions">
<%= f.submit "Sign up" %>
</div>
<% end %>
<%= render "users/shared/links" %>
Apportez des modifications à ce qui précède.
erb:app/views/users/registrations/new.html.erb
<h2>Sign up</h2>
<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
<% if @user.errors.any? %>
<% end %>
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name, autofocus: true, autocomplete: "name" %>
<% if @user.errors.include?(:name) %>
<p style="color: red;"><%= @user.errors.full_messages_for(:name).first %>
<% end %>
</div>
<div class="field">
<%= f.label :email %><br />
<%= f.email_field :email, autofocus: true, autocomplete: "email" %>
<% if @user.errors.include?(:email) %>
<p style="color: red;"><%= @user.errors.full_messages_for(:email).first %>
<% end %>
</div>
<div class="field">
<%= f.label :password %>
<% if @minimum_password_length %>
<em>(<%= @minimum_password_length %> characters minimum)</em>
<% end %><br />
<%= f.password_field :password, autocomplete: "new-password" %>
<% if @user.errors.include?(:password) %>
<p style="color: red;"><%= @user.errors.full_messages_for(:password).first %>
<% end %>
</div>
<div class="field">
<%= f.label :password_confirmation %><br />
<%= f.password_field :password_confirmation, autocomplete: "new-password" %>
<% if @user.errors.include?(:password_confirmation) %>
<p style="color: red;"><%= @user.errors.full_messages_for(:password_confirmation).first %>
<% end %>
</div>
<div class="actions">
<%= f.submit "Sign up" %>
</div>
<% end %>
<%= render "users/shared/links" %>
python
(1) Supprimez la description suivante et ajoutez une instruction if.@Recherchez les erreurs des utilisateurs.
<%= form_for〜%>
<%= render "users/shared/error_messages", resource: resource %>
↓
<%= form_for〜%>
<% if @user.errors.any? %>
<% end %>
(2) Ajoutez les noms de colonne suivants sous chaque champ après modification.
<% if @user.errors.include?(:name) %>
<p style="color: red;"><%= @user.errors.full_messages_for(:name).first %>
<% end %>
Si vous souhaitez ajouter une validation et voir plus d'erreurs Si vous ajoutez comme ci-dessous, c'est OK. Il existe de nombreux types de validation, veuillez donc le vérifier. Au fait, j'ai confirmé que les validations suivantes ne sont pas vides.
app/models/user.rb
validates :name, presence: true
Recommended Posts