Rails 3 - настройка ошибок и 404 страниц - PullRequest
27 голосов
/ 23 ноября 2010

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

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

Все учебники, найденные в Google, имеют давность и не работают на Rails 3.

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

Спасибо

Ответы [ 4 ]

36 голосов
/ 24 ноября 2010

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

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

11 голосов
/ 12 ноября 2013

2013 обновление для Rails 3.2 с Хосе Валим

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

config.exceptions_app = self.routes

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

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

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

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

Помните, что что бы вы ни делали в контроллере ошибок, оно не должно быть чем-то «причудливым». Будьте проще, потому что с вашим приложением что-то пошло не так!

11 голосов
/ 14 марта 2012

Я нашел этот урок весьма полезным:

http://ramblinglabs.com/blog/2012/01/rails-3-1-adding-custom-404-and-500-error-pages

3 голосов
/ 24 ноября 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...