Le contrôleur Rails a une méthode de classe appelée méthode rescue_from. Vous pouvez spécifier comment gérer les exceptions qui se produisent dans une action. Ce qui suit est 500Error (complétant l'erreur sur le serveur WEB)
application_controller.rb
#Si StandardError se produit, traiter avec rescue500
rescue_from StandardError, with: :rescue500
Cette méthode rescue500 effectue réellement le traitement Un argument est spécifié dans la méthode et un objet Exception y est inclus.
Après le rendu, le chemin du modèle ERB est spécifié. L'option d'état de rendu est le code d'état de la méthode HTTP.
application_controller.rb
private
#Spécifiez l'argument e. Contient un objet d'erreur
def rescue500(e)
render "errors/server_error", status: 500
end
end
Pour résumer ce qui précède
application_controller.rb
class ApplicationController < ActionController::Base
rescue_from StandartError, with: :rescue500
private
def rescue500(e)
render "errors/internal_server_error", status: 500
end
end
Ça ressemble à ça. Attraper une erreur-> laisser l'action la gérer-> afficher l'écran Voilà le flux.
Puisque l'erreur 500 n'est pas suffisante, ajoutez l'erreur 400. Ajouter du code qui détecte les erreurs ActiveRecord :: RecordNotFound
application_controller.rb
class ApplicationController < ActionController::Base
rescue_from StandartError, with: :rescue500
rescue_from ActiveRecord::RecordNotFound, with: :rescue404
private
def rescue400(e)
render "errors/not_found", status: 404
end
def rescue500(e)
render "errors/internal_server_error", status: 500
end
end
J'ai pu brancher le processus en raison d'une erreur comme celle-ci.
La méthode rescue_from permet de détecter les exceptions qui se produisent dans une action, donc Les erreurs qui se produisent pendant le processus de routage ne peuvent pas être capturées.
Il est donc nécessaire de concevoir ActionController :: RoutingError, mais je pense que je le rappellerai la prochaine fois.
C'est tout pour aujourd'hui. Merci beaucoup.
** 81 jours pour devenir un ingénieur à part entière **
Recommended Posts