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
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é.
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.