Я пытаюсь реализовать пользовательскую обработку ошибок, а также использовать CanCan. Когда пользователь достигает области, к которой им не разрешен доступ, возникает ошибка CanCan :: AccessDenied, и они должны быть отправлены на корневой URL. Вместо этого «rescue_from Exception» захватывает CanCan :: AccessDenied, и пользователь получает ошибку 500. Что я делаю не так?Пользовательская обработка ошибок и cancan
#application_controller.rb
rescue_from CanCan::AccessDenied do |exception|
redirect_to main_app.root_url, :alert => exception.message
end
rescue_from Exception,
:with => :render_error
rescue_from Mongoid::Errors::DocumentNotFound,
:with => :render_not_found
rescue_from ActionController::RoutingError,
:with => :render_not_found
rescue_from ActionController::UnknownController,
:with => :render_not_found
rescue_from AbstractController::ActionNotFound,
:with => :render_not_found
def render_not_found(exception)
render :template => "/errors/404.html",
:layout => 'errors.html',
:status => 404
end
def render_error(exception)
render :template => "/errors/500.html",
:layout => 'errors.html',
:status => 500
end
Это решение сработало для меня. В документации Rails четко указано, что порядок имеет значение, как вы отметили. –