Подтвердить что ты не робот

Rails 3 - настройка ошибки и 404 страницы

Я создаю приложение Rails 3 на Heroku. Сейчас мои страницы ошибок и страница 404 являются стандартными страницами рельсов/героев.

Я бы хотел настроить эти два. У вас есть страница с ошибкой и у вас есть страница для 404.

Все обучающие программы, найденные в google, являются годами и не работают с Rails 3.

Можете ли вы предложить хороший современный учебник или советы о том, как это сделать?

Спасибо

4b9b3361

Ответ 1

Если вы хотите зафиксировать определенные ошибки, используйте rescue_from в ApplicationController.

В противном случае, если вы просто хотите редактировать страницы ошибок по умолчанию, отредактируйте файлы 500.html и 400.html в {Rails.root}/public

Ответ 3

Обновление 2013 года для Rails 3.2 из Jose Valim

Когда Rails 3.0 вышел, одна из функций, которые люди внезапно пропустили, - это способность лучше обрабатывать исключения. Проблема заключалась в том, что, поскольку Rails 3 стал намного более "стойким", нам пришлось переместить некоторые функции в стек промежуточного программного обеспечения, и это заставило нас также перемещать всю обработку исключений. Rails 3.2 пытается вернуть некоторую настройку обратно в игру, разрешив вам установить собственное приложение стойки исключений, которое вызывается, когда происходит сбой. Например, вы можете установить приложение исключений на свой собственный маршрутизатор в свой config/application.rb:

config.exceptions_app = self.routes

Теперь, каждый раз, когда возникает исключение, ваш маршрутизатор будет вызван. Поэтому, чтобы отображать пользовательские 404 страницы, вы можете просто добавить к своему маршрутизатору:

match "/404", :to => "errors#not_found"

И реализуйте логику в контроллере, как хотите! Тем не менее, есть несколько вещей, которые следует иметь в виду, если вы идете по этой дороге:

  • Вам нужно использовать совпадение на ваших маршрутах, а не получать/отправлять/поместить/удалить потому что такие исключения могут возникать в любом HTTP-запросе;
  • Вы не сможете увидеть свои собственные исключения в разработке если вы не установите для параметра config.consider_all_requests_local значение false в вашем конфигурации/среда/development.rb. Причина в том, что если запрос считается локальным, Rails всегда будет поддерживать показ отладки страница исключений; [или запустите rails server -e production]
  • Вы всегда можете получить доступ к исходному исключению в контроллере ENV [ "action_dispatch.exception" ];
  • Невозможно установить файлы cookie, сеанс и исключение происходит. Все они были уже сериализованы клиент;
  • Наконец, приложение исключений по умолчанию, используемое Rails, которое просто делает страницу публичной /STATUS.html доступна здесь: action_dispatch/промежуточный/public_exceptions.rb

Помните, что все, что вы делаете в контроллере ошибок, не должно быть "фантазией". Держите его просто, потому что что-то уже пошло не так с вашим приложением!

Ответ 4

Well rails3 все еще использует те же 404.html, 422.html и 500.html в общей папке. Вы можете настроить их.

Если вы говорите о том, чтобы поймать эти исключения и сделать некоторые динамические вещи, я думаю, что базовая функциональность одна и та же, пусть некоторые around_filter поймают ваше особое исключение в application_controller т.е. ActiveRecord::RecordNotFound и сделают что-то с этим.