[RUBY] Faisons un écran d'erreur avec Rails

Créer un écran d'erreur avec Rails

Attrapez l'erreur

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

Processus avec action

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.

Ajouter une erreur 400

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.

Au fait

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

Faisons un écran d'erreur avec Rails
Faisons une fonction de recherche avec Rails (ransack)
[Rails] Rendre la pagination compatible avec Ajax
[rails] Faisons un test unitaire avec Rspec!
Faisons tirer le poker avec ruby ~ Implémentation 1 (carte) ~
Créons vous-même une instance avec .new. .. ..
Faisons dessiner du poker avec du rubis ~ Préparation ~
Faisons dessiner du poker avec ruby ~ Implémentation 4 (Deck) ~
[Rails] Gérons les constantes avec config gem
Créez quand même une fonction de connexion avec Rails
Faisons tirer le poker avec ruby ~ Implémentation 3 (joueur) ~
Faisons dessiner du poker avec ruby ~ Implémentation 2 (rôle) ~
Rétrograder une application existante créée avec les rails 5.2.4 vers 5.1.6
[Rails] Traduisons le message d'erreur en japonais
[Rails] Résolution d'erreur lors de la génération de jetons avec PAYJP
Faisons Draw Poker avec Ruby ~ Préparation de l'unité de test ~
Rails6 Je veux créer un tableau de valeurs avec une case à cocher
Créer un site EC avec Rails5 ⑤ ~ Modèle client ~
Créer un site EC avec Rails 5 ⑩ ~ Créer une fonction de commande ~
Après avoir installé le gemfile'devise''bootstrap 'avec des rails, que faire lorsque l'url est une erreur
Comment pousser une application développée avec Rails vers Github
Créer un site EC avec Rails5 ⑦ ~ Adresse, modèle de genre ~
[Mon mémo] Entendons-nous bien avec Pry / DB avec Rails
Faisons un Bot LINE avec Ruby + Sinatra - Partie 2
Erreur rencontrée avec les notes lors du déploiement de docker sur des rails
Créer un site EC avec Rails5 ④ ~ En-tête et pied de page ~
[Bases de Java] Créons un triangle avec une instruction for
Créez un site EC avec Rails5 ⑥ ~ entrée de données de départ ~
Faisons un Bot LINE avec Ruby + Sinatra - Partie 1
Erreur de routage Catch Rails
[Rails 6] Erreur d'exécution avec $ rails s
Faisons ressembler à des rails (vue)
Erreur d'installation de Mac Rails
Manipuler le dispositif avec des rails
[Rails] Didacticiel Apprendre avec les rails
[Rails] Test avec RSpec
[Rails] Que faire si vous ne pouvez pas obtenir de message d'erreur avec la méthode des erreurs
Raclons avec Java! !!
Prend en charge la multilinguisme avec Rails!
[Rails] Créer une application
Créer un contrôleur radio Ev3 avec JavaFx et leJOS [Partie 2]
Je veux pousser une application créée avec Rails 6 vers GitHub
Résumé du travail initial lors de la création d'une application avec Rails
Faisons une API simple avec EC2 + RDS + Spring boot ①
[swift5] Essayez de créer un client API avec différentes méthodes
Afficher un écran d'erreur pendant le processus de téléchargement pour répondre