2009-06-04 3 views
1

Ich habe eine Menge XHR-Aktionen in einem Controller, die etwas HTML zum Einfügen in die Seite zurückgeben. Wenn die Antwort ein Fehler ist, wird die Ausgabe in ein spezielles Fehler-Div gesetzt. Bis jetzt nichts besonders interessantes.Aktionsspezifischer Exception-Handler HTML in Rails

Dieser allgemeine Prozess funktioniert jedoch nicht für die Ausnahmebehandlung von Rails. Wenn ich in meinen XHR-Aktionen eine Exception erzeuge, bekomme ich die generische 500-Fehlerbehandlungsausgabe in meinem Fehlerdiv, was ein wenig entsetzlich aussieht. Während ich alle möglichen Ausnahmen in meiner Aktion abfangen und einen angemesseneren Fehler rendern kann, verliere ich die standardmäßige Ausnahmeprotokollierung und Benachrichtigung, die saugt.

Also die einzige Lösung, die ich mir vorstellen kann, ist in der Lage, ein anderes 500-Handler-HTML-Fragment für diese spezifischen Aktionen zu spezifizieren, aber ich finde nicht viel. Hat jemand irgendwelche Ideen?

Antwort

2

Sie sollten in der Lage sein, in Ihrem JavaScript-Handler nach dem Statuscode 500 zu suchen und eine allgemeine Nachricht wie "Serverproblem" anzuzeigen. Wenn es Fälle gibt, in denen eine spezifischere Fehlermeldung für einen Endbenutzer in einer Produktionsumgebung nützlich sein könnte, müssen Sie diese Ausnahmen mit einer rescue_from-Klausel abfangen. Wenn Sie wirklich verhindern möchten, dass die 500-Seite angezeigt wird, können Sie die rescue_action_in_public-Methode auf Ihrem XHR-Controller außer Kraft setzen.

+0

Dies hat den Trick gemacht. Es zu testen, war ein Steinwiderstand, aber recovery_action_in_public war genau das, wonach ich suchen musste. Vielen Dank! – womble