2009-05-04 22 views
0

Ich bin auf der Suche nach einigen Ajax Form Validierung mit Jquery. Alles ist vorhanden, und ich kann meinen Fehler in einem JSON-Objekt zurück, das etwa wie folgt aussieht:Rails Jquery Ajax Form Validierung

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

Das funktioniert gut, wenn ich möchte nur an der Spitze der Fehlermeldungen angezeigt werden. Allerdings würde ich auch gerne etwas Ähnliches wie die eingebaute Rails-Valdation machen, wo es sich umgibt und Fehlerfelder mit einem 'fieldWithErrors'-Div. (eigentlich möchte ich nur die Klasse 'fieldWithErrors' an den Fehlereingang anhängen)

Ich bin mir nicht sicher, wo genau die Schienen Magie, die die entsprechenden Fehlerfelder findet und fügt den Fehler div ist, aber ich suche Dieser Code, so dass ich ein Json-Objekt zurückgeben kann, das die Fehlermeldung und die tatsächliche ID des Fehlerfelds hat, damit ich es mit der richtigen Klasse aktualisieren kann. Natürlich kann ich den Objektnamen (Benutzer in diesem Fall) dem 'Feld' voranstellen, das im json-Objekt zurückgegeben wird (dh 'first_name'), aber ich möchte, dass dies eine generische Funktion ist, die für jedes Formular funktioniert, das ich haben.

Kann mir jemand auf die Stelle verweisen, wo die tatsächliche ID des Fehlerfeldes generiert wird. Ich würde gerne in der Lage sein, etwas wie @ object.errors [: first_name] .field_id zu tun, damit ich ein json-Objekt ähnlich dem obigen zurückgeben kann, außer dass mein Schlüssel 'first_name' tatsächlich 'user_first_name' ist, die ID des Fehlerfeld.

Antwort

1

Blick in Action/lib/action_view/Helfer/form_helper.rb zu sehen, wie Rails tut es

Hier werden die Methoden in form_helper.rb sind, die die Tag-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

Dank für den Hinweis mich bestimmen in die richtige Richtung. Kennen Sie die Datei form_helper? Ich kann sehen, wo es eine tag_id-Methode gibt, aber das ist in der Klasse InstanceTag. Ich kann nicht herausfinden, wie ich meine @ user Objektattribute in tag_id's umwandeln soll – brad