Der Rails-Controller verfügt über eine Klassenmethode, die als Rettung_von der Methode bezeichnet wird. Sie können angeben, wie Ausnahmen behandelt werden sollen, die innerhalb einer Aktion auftreten. Das Folgende ist 500Error (ergänzt den Fehler auf dem WEB-Server)
application_controller.rb
#Wenn StandardError auftritt, verarbeiten Sie mit Rescue500
rescue_from StandardError, with: :rescue500
Diese Rettungsmethode 500 führt tatsächlich die Verarbeitung durch Ausnahmeobjekte werden durch Angabe eines Arguments in die Methode aufgenommen.
Nach dem Rendern wird der Pfad der ERB-Vorlage angegeben. Die Option für den Renderstatus ist der Statuscode der HTTP-Methode.
application_controller.rb
private
#Geben Sie das Argument an. E. Enthält ein Fehlerobjekt
def rescue500(e)
render "errors/server_error", status: 500
end
end
Um das Obige zusammenzufassen
application_controller.rb
class ApplicationController < ActionController::Base
rescue_from StandartError, with: :rescue500
private
def rescue500(e)
render "errors/internal_server_error", status: 500
end
end
Es sieht aus wie das. Fangen Sie einen Fehler ab -> lassen Sie die Aktion damit umgehen-> zeigen Sie den Bildschirm an Das ist der Fluss.
Da 500 Fehler nicht ausreichen, fügen Sie 400 Fehler hinzu. Fügen Sie Code hinzu, der ActiveRecord :: RecordNotFound-Fehler abfängt
application_controller.rb
class ApplicationController < ActionController::Base
rescue_from StandartError, with: :rescue500
rescue_from ActiveRecord::RecordNotFound, with: :rescue404
private
def rescue400(e)
render "errors/not_found", status: 404
end
def rescue500(e)
render "errors/internal_server_error", status: 500
end
end
Aufgrund eines solchen Fehlers konnte ich den Prozess verzweigen.
Die Methodeett_from dient zum Abfangen von Ausnahmen, die in einer Aktion auftreten Fehler, die während des Routing-Prozesses auftreten, können nicht erfasst werden.
Es ist also notwendig, ActionController :: RoutingError zu entwickeln, aber ich denke, dass ich es beim nächsten Mal wieder aufrufen werde.
Das ist alles für heute. Vielen Dank.
** 81 Tage, um ein vollwertiger Ingenieur zu werden **
Recommended Posts