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