2009-05-04 14 views
0

Je cherche à faire une validation de la forme ajax avec jquery. Tout est en place et je peux retourner mes erreurs dans un objet JSON qui ressemble à ceci:rails jquery validation de la forme ajax

errors => { 
"first_name": "cannot be blank", 
"password": "cannot be blank", 
"last_name": "cannot be blank", 
"email": "cannot be blank"} 

Cela fonctionne très bien si je veux juste afficher les messages d'erreur en haut. Cependant, je voudrais aussi faire quelque chose de similaire à la construction de rails valdation où il entoure et les champs d'erreur avec un div 'fieldWithErrors'. (en fait, je veux juste ajouter la classe 'fieldWithErrors' à l'entrée d'erreur)

Je ne suis pas sûr exactement où la magie des rails qui trouve les champs d'erreur appropriés et ajoute l'erreur div est, mais je cherche ce code afin que je puisse retourner un objet json qui a le message d'erreur, et l'ID réel du champ d'erreur afin que je puisse le mettre à jour avec la classe appropriée. Bien sûr, je ne peux que préfixer le nom de l'objet (utilisateur dans ce cas) au champ 'field' qui est retourné dans l'objet json (ie 'first_name') mais je veux que ce soit une fonction générique qui fonctionne pour n'importe quelle forme avoir.

Quelqu'un peut-il me diriger vers l'endroit où l'ID réel du champ d'erreur est généré. J'aimerais pouvoir faire quelque chose comme @ object.errors [: first_name] .field_id afin que je puisse retourner un objet json similaire à celui ci-dessus, sauf que ma clé 'first_name' est en fait 'user_first_name', l'ID du champ d'erreur.

Répondre

1

regard dans actionpack/lib/ACTION_VIEW/assistants/form_helper.rb pour voir comment Rails-t-il

Voici les méthodes form_helper.rb qui déterminent l'étiquette ID

def tag_id 
     "#{sanitized_object_name}_#{sanitized_method_name}" 
    end 

    def sanitized_object_name 
     @sanitized_object_name ||= @object_name.gsub(/\]\[|[^-a-zA-Z0-9:.]/, "_").sub(/_$/, "") 
    end 

    def sanitized_method_name 
     @sanitized_method_name ||= @method_name.sub(/\?$/,"") 
    end 
+0

Merci de me pointant dans la bonne direction. Connaissez-vous le fichier form_helper? Je peux voir où il y a une méthode tag_id mais c'est dans la classe InstanceTag. Je n'arrive pas à comprendre comment transformer mes attributs d'objet @user en tags_id – brad