Есть ли способ сообщить Rails визуализировать ваши пользовательские страницы ошибок (например, те, которые вы пишете в своем ErrorsController
)?Я искал много тем, и мне показалось, что одной из них было добавление к ApplicationController
что-то вроде
if Rails.env.production?
rescue_from Exception, :with => :render_error
rescue_from ActiveRecord::RecordNotFound, :with => :render_not_found
rescue_from ActionController::UnknownController, :with => :render_not_found
rescue_from ActionController::UnknownAction, :with => :render_not_found
end
, а затем вы пишете свои методы render_error
и render_not_found
так, как выхочу.Это кажется мне по-настоящему нелегким решением.Кроме того, это плохо, потому что вы должны точно знать, какие ошибки могут произойти.Это временное решение.
Кроме того, действительно нет простого способа спасти ActionController::RoutingError
таким способом.Я видел, что одним из способов было добавить что-то вроде
get "*not_found", :to => "errors#not_found"
к вашему routes.rb
.Но что, если вы хотите поднять где-нибудь ActionController::RoutingError
вручную?Например, если человек, который не является администратором, попытается «администрировать» контроллеры, угадав URL.В этих ситуациях я предпочитаю поднять значение 404 больше, чем какую-либо ошибку «несанкционированного доступа», потому что это на самом деле говорит человеку, что он угадал URL.Если вы поднимете его вручную, он попытается отобразить 500 страниц, а я хочу 404.
Так есть ли способ сказать Rails: «Во всех случаях вы обычно визуализируете 404.html
или500.html
, сделать мои пользовательские страницы 404 и 500 "?(Конечно, я удалил страницы 404.html
и 500.html
из папки public
.)