ruby 2.5.7 Rails 5.2.4.3 OS: macOS Catalina
Im Ausgangszustand wird es wie folgt beschrieben.
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" %>
Nehmen Sie die oben genannten Änderungen vor.
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) Löschen Sie die folgende Beschreibung und fügen Sie eine if-Anweisung hinzu.@Überprüfen Sie, ob Benutzerfehler vorliegen.
<%= form_for〜%>
<%= render "users/shared/error_messages", resource: resource %>
↓
<%= form_for〜%>
<% if @user.errors.any? %>
<% end %>
(2) Fügen Sie nach der Bearbeitung unter jedem Feld die folgenden Spaltennamen hinzu.
<% if @user.errors.include?(:name) %>
<p style="color: red;"><%= @user.errors.full_messages_for(:name).first %>
<% end %>
Wenn Sie eine Validierung hinzufügen und weitere Fehler sehen möchten Wenn Sie wie folgt hinzufügen, ist es OK. Es gibt viele Arten der Validierung. Bitte probieren Sie es aus. Ich habe übrigens bestätigt, dass die folgenden Validierungen nicht leer sind.
app/models/user.rb
validates :name, presence: true
Recommended Posts