[RUBY] Erreur de routage Catch Rails

Catch RoutingError

Cet article est la suite de l'article suivant Faisons un écran d'erreur avec Rails

La méthode de classe rescue_from sert à intercepter les exceptions qui se produisent dans une action, elle ne peut donc pas intercepter le traitement qui se produit à l'étape du routage.

Vous devez donc créer un fichier dans le répertoire config / initializers.

L'action à appeler est triée en fonction de la valeur de request.path_info.

404 => action not_found 422 => unprocessable_entity Autre => erreur_serveur_interne

Après cela, l'action est passée comme argument à ErrorsController et appelée.

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

Le contrôleur ressemble à ceci: La vue à afficher par rendu est spécifiée pour chaque action.

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

Il y a donc aussi des erreurs de routage qui ne peuvent pas être détectées par rescue_from J'ai pu gérer l'erreur et afficher l'écran comme décrit ci-dessus.

C'est tout pour aujourd'hui.

** 80 jours pour devenir un ingénieur à part entière **

Recommended Posts

Erreur de routage Catch Rails
À propos du routage des rails
Principes de base du routage des rails
Résumé du routage Rails 6.0
[Note] Liste des erreurs de rails
[Rails] Concevoir un résumé de routage associé
Erreur d'installation de Mac Rails
[Note] Confirmation de routage Rails3
[Rails] Paramètres d'acheminement complets
Erreur de rails Bibliothèque non chargée
Relation de vue du contrôleur de routage des rails
Erreur lors de l'utilisation des rails capybara
Comment écrire le routage Rails
[rails] erreur lors de l'installation du périphérique
Rails routage des ressources singulières par ressource
[Rails] Quel était le message d'erreur?
[Rails] Localisation japonaise des messages d'erreur
[Rails] Erreur de validation inattendue dans l'appareil
[Rails] Résumé de la configuration de routage compliquée
Définir autre chose que l'ID pour le routage Rails
[Rails] Afficher les messages d'erreur du formulaire de manière asynchrone
Ruby On Rails conçoit un conflit de routage
routage
[Rails] Erreur de syntaxe, tSTRING_END inattendue, attendue ""
[Rails] Récapitulatif des incidents liés aux erreurs de déploiement AWS
Ruby on Rails [Mémorandum d'erreur] Erreur de routage Aucune route ne correspond à [DELETE] "/ users / sign_out"
[Ruby on Rails] 1 modèle CRUD (routage principal)
Rails / users /: id / to / {random_srting}: routage par défaut
[Rails] Comment afficher les messages d'erreur individuellement
Test des messages d'erreur: Notes du didacticiel Rails - Chapitre 7
[Ruby / Rails] Mécanisme de nouvelle tentative d'erreur de thread
[rails] Comment configurer le routage dans les ressources
[erreur de rails] Erreur d'installation md5.bundle et mysql
Console Rails Gestion des erreurs de valeur de chaîne incorrecte
Faisons un écran d'erreur avec Rails
[Rails / Heroku] Procédure de résolution d'erreur après push