9
votes

Les messages d'erreur incluent toujours le nom d'attribut

J'ai les messages d'erreur de validation suivants à venir lorsque j'essaie de soumettre un formulaire vierge: xxx pré>

Ces messages sont pour les attributs suivants: P>

start_time_time
start_time_time
start_time_ymd
start_time_ymd
stylist_services


2 commentaires

Quel code utilisez-vous dans votre vue pour afficher les messages d'erreur?


Vous avez à peu près deviné dans votre réponse, Brandon. Ce que vous mettez là est utile et bon à savoir. L'autre réponse se trouve être une meilleure solution dans mon cas, mais j'aimerais pouvoir sélectionner les deux réponses comme correctes.


4 Réponses :


17
votes

Vous pouvez utiliser la route I18N pour modifier le nom d'affichage de l'attribut.

config / local / fr.yml: xxx


0 commentaires

23
votes

Il est courant de boucler sur objet.full_mesages code> pour sortir chaque message complet: xxx pré>

mais un message "complet" est composé du nom de champ localisé suivi de la message (comme vous l'avez vu; c'est parce que les messages sont généralement des choses comme "ne peuvent pas être blanches"). Si vous voulez juste que le message d'erreur réel moins le nom du champ, utilisez l'itérateur chacun intégré code> à la place: p>

<% if object.errors.any? %>
  <h2>Errors</h2>
  <ul>
  <% object.errors.each do |field, msg| %>
    <li><%= msg %></li>
  <% end %>
  </ul>
<% end %>

<h2>Errors</h2>
<ul>
  <li>Looks like you forgot the appointment start time.</li>
  <li>Sorry, we can't understand "" as a time.</li>
  <li>Please choose a date for the appointment.</li>
  <li>Sorry, we can't understand "" as a date.</li>
  <li>Please choose at least one service.</li>
</ul>


0 commentaires

0
votes

J'ai fait presque la même chose que Brandon.

Tout d'abord, j'ai écrit une fonction d'aide pour l'objet que les erreurs rendraient pour. xxx

alors, dans La vue qui a la forme étant validée, j'ai fait: (Remarque: Ceci est le code HAML non html, mais les balises sont toujours les mêmes afin que vous puissiez voir clairement ce que je fais) xxx

qui m'a fait pour moi, non gemmes ou plugins tiers.

-Demitterie


0 commentaires

27
votes

Dans Rails 3.2.6, vous pouvez supprimer l'inclusion du nom d'attribut en définissant des erreurs.Format dans un fichier local (par exemple, config / local / fr.yml): xxx

Sinon, le format par défaut est "% {attribut}% {message}".


0 commentaires