[Ruby on Rails] Affichage individuel des messages d'erreur

Cible

error.gif

Environnement de développement

ruby 2.5.7 Rails 5.2.4.3 OS: macOS Catalina

supposition

Modifier vue

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" %>

Supplément

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

[Ruby on Rails] Affichage individuel des messages d'erreur
[Rails] Localisation japonaise des messages d'erreur
Connaissance de base de Ruby on Rails
[Ruby on Rails] Ajoutez et supprimez des balises et affichez les messages (succès / erreur) en utilisant ajax.
(Ruby on Rails6) Affichage de la base de données qui a obtenu l'identifiant de la base de données
[Ruby on Rails] Introduction des données initiales
[Rails] Ajout de la fonction de commentaire Ruby On Rails
[Rails] Comment afficher les messages d'erreur individuellement
[Ruby on Rails] Notation japonaise de l'erreur
Explication de Ruby sur rails pour les débutants ①
[Ruby on rails] Implémentation d'une fonction similaire
Implémentation de la fonction de connexion Ruby on Rails (Session)
À propos des messages d'erreur Ruby
[Ruby on Rails] Jusqu'à l'introduction de RSpec
Recommandation de classe de service dans Ruby on Rails
Ruby on Rails ~ Principes de base de MVC et du routeur ~
Ruby on Rails élémentaire
[Ruby on Rails] Un mémorandum de modèles de mise en page
Principes de base de Ruby on Rails
Association Ruby On Rails
[Ruby on Rails] Affichage du classement (total, valeur moyenne)
[Ruby on Rails] Comment japonaisiser le message d'erreur de l'objet Form (ActiveModel)
[Ruby on Rails] Communication asynchrone de la fonction de publication, ajax
Implémentation de la fonction de connexion Ruby on Rails (édition de devise)
Localisation japonaise des messages d'erreur Rails [objets de conception / formulaire, etc.]
[Ruby on Rails] Fonction de classement des scores (affichage complet)
Explication de Ruby sur rails pour les débutants ⑥ ~ Création de validation ~
Explication de Ruby on rails pour les débutants ② ~ Création de liens ~
Essayez d'utiliser l'attribut de requête Ruby on Rails
Explication de Ruby on rails pour les débutants ⑦ ~ Implémentation Flash ~
Localisation japonaise du message d'erreur
Record d'apprentissage de Ruby on rails -2020.10.03
Création de portfolio Ruby on Rails
Record d'apprentissage Ruby on rails -2020.10.04
[Ruby on Rails] Debuck (binding.pry)
Record d'apprentissage de Ruby on rails -2020.10.05
Record d'apprentissage de Ruby on rails -2020.10.09
Record d'apprentissage Ruby on rails-2020.10.07 ②
Record d'apprentissage Ruby on rails-2020.10.07 ①
Record d'apprentissage de Ruby on rails -2020.10.06
Résumé de la validation Ruby on Rails
[Ruby on Rails] méthode indéfinie ʻid'for nil: méthode de résolution d'erreur NilClass
[Ruby on Rails] Afficher rapidement le titre de la page dans le navigateur
[Procédure 1 pour les débutants] Ruby on Rails: Construction d'un environnement de développement
[Ruby on Rails] Élimination de Fat Controller-First, logic to model-
Supprimer tout le contenu de la page de liste [Ruby on Rails]
Une note sur la fonction de départ de Ruby on Rails
[Ruby on Rails] Animation de défilement facile de javascript (en utilisant ScrollReveal.js)
Comment afficher des graphiques dans Ruby on Rails (LazyHighChart)