[RUBY] Que faire si l'image publiée par refile disparaît après avoir défini la page d'erreur 404 dans Rails

Aperçu

Ce n'est que lorsque je crée une page d'erreur 404 dans Rails, l'image publiée par refile disparaît. Si vous commentez le code sur la page d'erreur, l'image sera affichée.

Le code de la page d'erreur 404 est ci-dessous.

application_controller.rb


  unless Rails.env.development?
    rescue_from Exception,                      with: :render_500 
    rescue_from ActiveRecord::RecordNotFound,   with: :render_404
    rescue_from ActionController::RoutingError, with: :render_404
  end

#Créez un répertoire d'erreurs dans les vues et 404 là.html.erb/505.html.Créer erb
  def render_404
    render 'error/404', status: :not_found
  end

  def render_500
    render 'error/500', status: :internal_server_error
  end

config/routes.rb


Rails.application.routes.draw do

#Il sera évalué dans l'ordre du haut, alors écrivez-le en bas
get '*path', to: 'application#render_404'

end

Cause

Si vous vérifiez les itinéraires des rails dans le terminal,

GET /*path(.:format)
refile_app /attachments

C'était de l'ordre de. Puisque les routes sont évaluées ci-dessus, get '* of config / routes.rb est évalué avant que / attachments, qui est l'URL du fichier sans rien défini dans config / routes.rb, ne soit évalué. path ', to:' application # render_404' a été évalué.

Faire face

Vous pouvez évaluer refile_app / attachments avant GET / * path (.: Format).

Tout d'abord, ajoutez ce qui suit à ʻinitializers / refile.rb. Si refile.rb` n'existe pas, créez-en un nouveau.

config/initializers/refile.rb


Refile.automount = false

config/routes.rb


Rails.application.routes.draw do

mount Refile.app, at: Refile.mount_point, as: :refile_app #ajouter à
get '*path', to: 'application#render_404' #Écrivez en bas

end

Si vous vérifiez les itinéraires des rails dans le terminal,

refile_app /attachments
GET /*path(.:format)

Je pense que c'est de l'ordre de.

Je pense que / attachments sera évalué en premier et l'image sera affichée.

https://github.com/refile/refile#mounting Comme je l'ai écrit, j'ai dû désactiver le montage automatique du remplissage et définir l'itinéraire moi-même.

Recommended Posts

Que faire si l'image publiée par refile disparaît après avoir défini la page d'erreur 404 dans Rails
Que faire si la page Rails n'est pas affichée dans le didacticiel Rails 1.3.2
[Rails / Docker] Que faire si l'accès est refusé par le navigateur (localhost: 3000) après l'ajout d'un gem
Que faire si vous obtenez une erreur gcc dans Docker
Que faire lorsque Cloud 9 est plein dans le didacticiel Rails
Que faire si vous obtenez une erreur «302» dans le code de test du contrôleur dans Rails
Que faire si l'image d'arrière-plan n'est pas appliquée après le déploiement
Que faire si le serveur Rails ne peut pas démarrer
[Rails] Que faire lorsque l'image Refile n'est pas affichée lors de l'écriture du traitement au moment de l'erreur de routage
Que faire si le message "Un serveur est déjà en cours d'exécution" s'affiche. Erreur lors de la tentative de démarrage du serveur rails
Que faire si la mise à jour ne prend pas effet après le déploiement de Rails AWS
Que faire si vous obtenez une erreur de nombre d'arguments erroné dans binding.pry
Que faire lorsqu'une exception java.io.IOException se produit dans GlassFish
Que faire si mysql2 obtient une erreur d'installation de bundle
Que faire si la commande rails devient inutilisable
[Rails] Que faire si vous effectuez accidentellement une installation groupée dans un environnement de production de votre environnement local
[Tutoriel Rails Chapitre 2] Que faire lorsque vous faites une erreur dans le nom de la colonne
[Rails] Que faire si vous ne pouvez pas obtenir de message d'erreur avec la méthode des erreurs
Que faire si vous obtenez une erreur avec l'authentification de base pendant le code de test Rails
[Rails 6] Que faire lorsqu'une erreur de modèle manquante se produit après l'introduction du haml [Super facile]
[Rails] Que faire si les données ne sont pas enregistrées dans la base de données
Que faire si vous oubliez votre mot de passe root sur CentOS7
[Rails] Que faire lorsque l'erreur Aucune base de données sélectionnée et Base de données inconnue apparaît dans db: migrate
[Débutant en programmation] Que faire lorsque les rails deviennent une erreur dans l'environnement de développement local
Que faire si vous obtenez une erreur de bibliothèque partagée JNI lorsque vous essayez de créer avec Eclipse
Que faire si vous obtenez un avertissement groovy dans Thymeleaf Layout
Que faire lorsque le préfixe c n'est pas lié dans JSP
Que faire si vous n'aimez pas le code généré par swagger-codegen-cli
Que faire si vous entrez gem'bcrypt 'dans votre Gemfile et obtenez une erreur avec l'installation du bundle
Que faire si l'opération non autorisée s'affiche lors de l'exécution d'une commande dans le terminal
[Gradle] [checkstyle] Que faire si le paramètre actif de Checkstyle est supprimé par "Refresh Gradle project" d'Eclipse
Que faire si la construction échoue avec l'erreur «Le module compilé avec Swift x.x.x ne peut pas être importé par le compilateur Swift x.x.x»
Que faire si vous ne pouvez pas activer la boîte de sélection créée par bootstrap-select
Que faire si les modifications ne sont pas reflétées dans le fichier manifeste JAR
Que faire si vous obtenez une exception javax.net.ssl.SSLHandshakeException: connexion de l'hôte distant fermée pendant l'établissement de liaison dans IBM JDK
Que faire si vous obtenez Impossible d'enregistrer la table principale dans un fichier après l'importation d'un projet dans Eclipse
Androd: Que faire à propos de "Le Royaume est déjà dans une transaction d'écriture dans"
Que faire si l'installation de ffi échoue lors du lancement d'une application dans Rails
Comment traduire le message d'erreur en japonais (que faire si vous ne pouvez pas vous connecter pour une raison quelconque)
Que faire à propos de "Un serveur est déjà en cours d'exécution ..." qui s'est produit sans désactiver le serveur de rails dans le terminal
Que faire si vous obtenez une erreur indiquant "Veuillez saisir une valeur valide" lors de l'obtention avec Rails datetime_field
Que faire si le message d'erreur "Impossible de trouver un moteur d'exécution JavaScript" s'affiche lors du démarrage du serveur rails
Que faire si vous recevez l'avertissement «Le validateur d'unicité n'appliquera plus la comparaison sensible à la casse dans Rails 6.1.» Dans Rails 6.0
Que faire si vous ne trouvez pas le JDK que vous avez mis dans SDKMAN après la migration de bash vers zsh sous macOS
Après avoir installé le gemfile'devise''bootstrap 'avec des rails, que faire lorsque l'url est une erreur
Que faire si Failure / Error: require File.expand_path ('../ config / environment', __dir__) apparaît dans RSpec
Que faire lorsque l'adresse déjà utilisée est affichée après l'exécution des rails
Que faire si vous ne trouvez pas votre clé API après le déploiement sur Rails Heroku