Это мой первый пост здесь, поэтому я надеюсь, что я разместил этот вопрос в нужном месте. В противном случае, пожалуйста, дайте мне знать, чтобы я знал, что буду в следующий раз размещать здесь :)Ruby on Rails -HTTP обработка ошибок
Я работаю на веб-сайте RoR и хотел бы обрабатывать ошибки сервера (400, 404, 500 и т. Д.) Отдельно. Кроме того, поскольку сайт является динамическим, я хотел бы обрабатывать ошибки в среде рельсов, а не на уровне сервера. Пример того, что я хотел бы сделать, может состоять в том, чтобы представить пользователю дополнительный материал или панель поиска, когда она попадает на страницу или шаблон, который не загружается или просто не существует.
Я новичок в RoR, поэтому, пожалуйста, приготовьтесь со мной на случай, если я задам очевидное.
Итак, я немного читал, и я думаю, что использование обработчика исключений rescue_from - это способ пойти в моем случае. (Было бы более чем приятно услышать, если у кого-то из вас есть другое мнение).
У меня есть простой рабочий прототип (см код ниже) и работает, однако, я получаю сообщение об ошибке, когда я включаю следующий обработчик исключений в коде:
rescue_from ActionController::MissingTemplate, :with => :not_found #404
Теперь, я не могу видеть что у меня есть орфографическая ошибка, и я видел эту строку в коде, опубликованном в Интернете. Однако, когда я включаю его, я получаю следующую ошибку маршрутизации:
Routing Error No route matches "/errorhandle" with {:method=>:get}
Я работаю на рельсах 2.3.5, возможно, что что-то делать с этим?
Я надеюсь, что вы можете помочь мне пролить свет на этот вопрос.
Cheers! /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
Можете ли вы показать нам соответствующие маршруты с маршрутов.rb, если таковые имеются? – Trevoke
Sure Trevoke, спасибо за быстрый ответ. Я ничего не добавил к route.rb, так что я думаю, что это в значительной степени std. файл: ActionController :: Routing :: Routes.draw do | map | map.resources: errorhandlers # ... # участки линий закомментированы # ... map.connect ': контроллер /: Действие /: идентификатор' map.connect «: контроллер /: Действие/: id.: format ' end – 2010-01-14 15:08:10
Ух, не уверен, как сделать комментарий красивым и аккуратным * uark *. Надеюсь, что это так легко читать ... – 2010-01-14 15:10:04