Comment changer le message de validation «3 erreurs empêchent l'enregistrement de cette foobar» dans Rails?

StackOverflow https://stackoverflow.com/questions/125512

  •  02-07-2019
  •  | 
  •  

Question

Dans mon application rails, j'utilise les aides de validation dans mes objets d'enregistrement actifs et ils sont excellents. En cas de problème, les erreurs standard "3 erreurs interdisent la sauvegarde de cette fonction" sur ma page Web avec les problèmes individuels.

Existe-t-il un moyen de remplacer ce message par défaut par le mien?

Était-ce utile?

La solution

L'assistant error_messages_for que vous utilisez pour afficher les erreurs accepte l'option : header_message qui vous permet de modifier le texte de cet en-tête par défaut. Comme dans:

  

error_messages_for 'model',: header_message = > "Certaines erreurs ont empêché la sauvegarde de ce modèle"

.

L’A API RubyOnRails est votre ami.

Autres conseils

Le " validates_ " Les méthodes de votre modèle peuvent généralement toutes recevoir un : message = > Paramètre "Mon message de validation" .

En règle générale, j'emballe les erreurs dans les éléments suivants:

<% if(!@model.errors.empty?) %>
<div id="error_message">        
  <h2>
    <%= image_tag("error.png", :align => "top", :alt => "Error") -%>
    Oops, there was a problem editing your information.
  </h2>
  <%= short_error_messages_for(:model) %>
</div>
<% end %>  

Ensuite, dans mon application_helper , je parcours les erreurs et génère une simple liste:

  def short_error_messages_for(object_name)
    object = instance_variable_get("@#{object_name}")
    if object && !object.errors.empty?
       content_tag("ul", object.errors.full_messages.collect { |msg| content_tag("li", msg) } )     
    else
        ""
    end
  end  

Ce code est assez ancien et ce n'est probablement pas comme cela que j'écrirais Ruby ces derniers temps, mais vous en avez l'essentiel.

Vous pouvez effectuer une itération sur le fichier model.errors au lieu d’utiliser le gestionnaire d’erreurs.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top