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