Dieser Artikel ist eine Fortsetzung des folgenden Artikels Machen wir einen Fehlerbildschirm mit Rails
Die Klassenmethode Rescue_from dient zum Abfangen von Ausnahmen, die in einer Aktion auftreten, sodass die in der Routingphase auftretende Verarbeitung nicht abgefangen werden kann.
Sie müssen also eine Datei im Verzeichnis config / initializers erstellen.
Die aufzurufende Aktion wird nach dem Wert von request.path_info sortiert.
404 => nicht gefundene Aktion 422 => unprocessable_entity Other => internal_server_error
Danach wird die Aktion als Argument an ErrorsController übergeben und aufgerufen.
exceptions_app.rb
Rails.application.configure do
config.exceptions_app = ->(env) do
request = ActionDispatch::Request.new(env)
action =
case request.path_info
when "/404"; :not_found
when "/422"; :unprocessable_entity
else; :internal_server_error
end
ErrorsController.action(action).call(env)
end
end
Der Controller sieht folgendermaßen aus: Die Ansicht, die beim Rendern angezeigt werden soll, wird für jede Aktion angegeben.
errors_controller.rb
class ErrorsController < ApplicationController
def not_found
render status: 404
end
def unprocessable_entity
render status: 422
end
def internal_server_error
render status: 500
end
end
Es gibt also auch Routing-Fehler, die von recovery_from nicht erkannt werden können Ich konnte den Fehler behandeln und den Bildschirm wie oben beschrieben anzeigen.
Das ist alles für heute.
** 80 Tage, um ein vollwertiger Ingenieur zu werden **
Recommended Posts