Wie Serverfehler in Rails 2.3.5 mit JSON und jQuery angezeigt werden

8

Ich habe eine direkte Bearbeitung auf einer Seite in meiner App (mit Rails 2.3.5 und jQuery). Ich möchte wissen, wie ein Fehler auf der Seite angezeigt wird, wenn das Update fehlschlägt.

Ich verwende ajax (ein XMLHttpRequest), um ein Update auf ein Comment-Objekt zu speichern. Der Controller hat eine Update-Methode wie folgt:

%Vor%

In Firebug kann ich sehen, dass der Server eine "422" zurückgibt (ein entsprechender Validierungsfehlerstatuscode). Aber es ist eine Antwort auf eine XMLHttpRequest, so dass es keine Umleitung zu einer Fehlerseite gibt.

Ich denke, ich möchte das tatsächlich tun:

%Vor%

oder vielleicht das:

%Vor%

und lösen Sie eine Javascript-Funktion aus, die alle Fehler durchläuft (und anzeigt).

Ich verwende ein Rails-Plug-in REST in Place , um die direkte Bearbeitung zu implementieren. Es scheint keine Callback-Funktion zu haben, um einen Fehler zu behandeln. Was sind meine Möglichkeiten? Kann ich Javascript schreiben, um auf eine Fehlerbedingung zu reagieren, ohne das Plugin zu hacken? Muss ich das rest_in_place-Plugin hacken, um einen Fehler zu beheben? Gibt es ein besseres Plugin (für Rails oder jQuery), das die direkte Bearbeitung, einschließlich Fehlerbedingungen, übernimmt?

AKTUALISIEREN

Dieser Beitrag von Peter Bui Standard-JSON-Antwort für Rails und jQuery war hilfreich, um zu zeigen, wie man eine Fehlermeldung vom Server mit XMLHttpRequest.status behandelt. Ich schaute auf seine Implementierung eines Blogs mit ajax paydro-talks . Ich bin überrascht über die Komplexität, die erforderlich ist, um eine einfache Fehlerbedingung zu behandeln. In der Regel hat Rails alle Vorteile, aber es scheint, dass Serverfehler mit JSON nicht möglich sind. Kann das sein?

Ich habe mir auch grimens validiable-on-rails angeschaut, die Modelle validieren, wenn ajax XMLHttpRequest verwendet wird. Es ist mir nicht klar, wie ich es verwenden würde, um den allgemeinen Fall eines "Speicherns" zu behandeln, der fehlschlägt, wenn Validierungen erfolgreich sind.

    
Daniel Kehoe 22.03.2010, 01:34
quelle

1 Antwort

1

Ich denke, deine beste Option wäre, das Plugin in diesem Fall zu hacken, da es wirklich dumm ist, dass das Plugin sowieso keinen Fehlerhandler hat. Tipp: Vielleicht sagen Sie dem Autor des Plugins, dass es nett und nützlich wäre, Fehler zu behandeln (was ist, wenn Verbindung fehlschlägt oder irgendetwas? Plugin wird nie wissen und keine Rückmeldung für den Benutzer).

Es sollte ausreichen, wenn Sie in der Zeile 33 in jquery.rest_in_place.js nach der Erfolgsoption

etwas hinzufügen %Vor%     
jitter 22.03.2010 02:59
quelle