Это мой первый пост здесь, поэтому я надеюсь, что отправлю этот вопрос в нужное место. В противном случае, пожалуйста, дайте мне знать, чтобы я знал в следующий раз, когда я публикую здесь:)
Я работаю на веб-сайте RoR и хотел бы обрабатывать ошибки сервера (400, 404, 500 и т. Д.) Индивидуально. Кроме того, поскольку веб-сайт является динамическим, я хотел бы обрабатывать ошибки в среде rails, а не на уровне сервера.
Примером того, что я хотел бы сделать, может быть предоставление пользователю дополнительного материала или панели поиска, когда он сталкивается со страницей или шаблоном, который не загружается или просто не существует.
Итак, я немного почитал, и я думаю, что использование обработчика исключений rescue_from - лучший способ в моем случае. (Был бы более чем рад услышать, если у кого-то из вас другое мнение).
У меня есть простой рабочий прототип (см. Код ниже), но я получаю ошибку, когда добавляю в код следующий обработчик исключений:
rescue_from ActionController::MissingTemplate, :with => :not_found #404
Теперь я не вижу, что у меня есть орфографическая ошибка, и я видел эту строку в коде, размещенном в Интернете. Однако, когда я включаю его, я получаю следующую ошибку маршрутизации:
Routing Error No route matches "/errorhandle" with {:method=>:get}
Я работаю над рельсами 2.3.5, возможно, это как-то связано с этим?
Я надеюсь, что вы поможете мне пролить свет на эту проблему.
Ура!
/ Maja
class ApplicationController < ActionController::Base
helper :all # include all helpers, all the time
protect_from_forgery #See ActionController::RequestForgeryProtection for details
#ActiveRecord exceptions
rescue_from ActiveRecord::RecordNotFound, :with => :not_found #400
#ActiveResource exceptions
rescue_from ActiveResource::ResourceNotFound, :with => :not_found #404
#ActionView exceptions
rescue_from ActionView::TemplateError, :with => :not_found #500
#ActionController exceptions
rescue_from ActionController::RoutingError, :with => :not_found #404
rescue_from ActionController::UnknownController, :with => :not_found #404
rescue_from ActionController::MethodNotAllowed, :with => :not_found #405
rescue_from ActionController::InvalidAuthenticityToken, :with => :not_found #405
rescue_from ActionController::UnknownAction, :with => :not_found #501
# This particular exception causes all the rest to fail.... why?
# rescue_from ActionController::MissingTemplate, :with => :not_found #404
protected
def not_found
render :text => "Error", :status => 404
end
# Scrub sensitive parameters from your log
# filter_parameter_logging :password
end