2009-10-24 4 views

Répondre

3

Utilisez error_message_on au lieu de error_messages pour obtenir le message d'attribut individuel.

<div class="errorMessages"> 
    <% %{name title description}.each do |att| %> 
     <%= f.error_message_on att, :css_class => "error" %> 
    <% end %> 
</div> 
+0

Parfait. C'est ce dont j'avais besoin. –

0

Voici une réponse (pour mes propres notes, fondamentalement) en utilisant la réponse de Baldu. Cela met les attribute_names en ordre alphabétique:

<% if @model.errors.length>0 %> 
    <div class="errorExplanation"> 
    <h3>There were problems with the following fields:</h3><ul> 
     <% @model.attribute_names.each do |attribute| %> 
     <% if [email protected][attribute].blank? %> 
      <li><%= f.error_message_on attribute, Model.human_attribute_name(attribute)+ "&nbsp;", :style=>"display:inline" %></li> 
     <% end %> 
     </ul> 
    <% end %> 
    </div> 
<% end %> 

Bien sûr, vous pouvez paramétrer cet autre comme par exemple partielle,. Je vais probablement le faire :)

2

Dans 2.3.6 messages de validation montreront pour vous les déclarés dans le code

link

0

J'ai eu le même prob Groovy dans des rails (Grails). le changer dans le code ne change rien, la réponse ci-dessus ne fonctionne pas pour moi non plus. C'est ainsi que je finis par résoudre mon problème. L'équipe a créé une balise personnalisée pour trier/commander les messages d'erreur de grails.

def renderOrderedErrors = { attrs, body -> 

    def bean = attrs.bean 
    def fields = attrs.fields 

    fields.each { out << g.renderErrors(bean: bean, field:it) } 

} 

et voici comment vous l'utilisez:

<g:if test="${totalRating.hasErrors() || rating.hasErrors()}"> 
    <div class="errors"> 
     <g:if test="${totalRating.hasErrors()}"><g:renderOrderedErrors bean="${totalRating}" as="list" fields="${['totalEffectiveDate','awardedDisability']}"/></g:if> 
     <g:if test="${rating.hasErrors()}"><g:renderOrderedErrors bean="${rating}" as="list" fields="${['ratingStatus','ratingIssue','disability','effectiveDate','ratingType','socDate','nodDate','ssocDate','form9Date','six46Date','remandDate']}"/></g:if>//this is the way you want to order the fields in the form 
    </div> 
</g:if> 
Questions connexes