[RUBY] Catch Rails Routing-Fehler

Catch RoutingError

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

Catch Rails Routing-Fehler
Informationen zum Rails-Routing
Grundlagen des Rails-Routings
Rails 6.0-Routing-Zusammenfassung
[Hinweis] Rails-Fehlerliste
[Rails] Zusammenfassung der geroutenbezogenen Entwicklung
Mac Rails Installationsfehler
[Hinweis] Bestätigung des Rails3-Routings
[Schienen] Vervollständigen Sie die Routing-Einstellungen
Schienenfehler Bibliothek nicht geladen
Beziehung zwischen Rails Routing Controller-Ansicht
Fehler bei der Verwendung von Schienen Capybara
Wie schreibe ich Rails Routing
[Rails] Fehler während der Installation des Geräts
Rails singuläres Ressourcenrouting nach Ressource
[Rails] Was war die Fehlermeldung?
[Rails] Japanische Lokalisierung von Fehlermeldungen
[Rails] Unerwarteter Validierungsfehler im Gerät
[Rails] Zusammenfassung der komplizierten Routing-Konfiguration
Stellen Sie eine andere ID als die für das Rails-Routing ein
[Schienen] Zeigen Sie Formularfehlermeldungen asynchron an
Ruby On Rails entwickelt Routing-Konflikte
Routing
[Rails] -Syntaxfehler, unerwartetes tSTRING_END, erwartet ''
[Rails] Zusammenfassung der AWS-Bereitstellungsfehler
Ruby on Rails [Fehlermemorandum] Routing-Fehler Keine Route stimmt mit [DELETE] "/ users / sign_out" überein.
[Ruby on Rails] 1 Modell CRUD (Routing Main)
Rails / users /: id / to / {random_srting}: Standard-Routing
[Rails] So zeigen Sie Fehlermeldungen einzeln an
Testen auf Fehlermeldungen: Rails Tutorial Notes-Kapitel 7
[Ruby / Rails] Mechanismus zum erneuten Versuch eines Thread-Fehlers
[Rails] So konfigurieren Sie das Routing in Ressourcen
[Rails s Fehler] md5.bundle und MySQL Installationsfehler
Rails-Konsole Falsche Behandlung von Zeichenfolgenwertfehlern
Lassen Sie uns mit Rails einen Fehlerbildschirm erstellen
[Rails / Heroku] Fehlerbehebungsverfahren nach dem Drücken