Обработка ошибок валидации - PullRequest
0 голосов
/ 30 марта 2009

В настоящее время, когда мое приложение rails обнаруживает ошибку, оно выгружает код ошибки и отслеживает стек в окне браузера.

Как это отключить, чтобы эти ошибки записывались только в журнал и не выводились в браузер?

Спасибо

Исправление: В основном меня интересуют только ошибки проверки. Все, что я хочу, - это та же функциональность, которую вы получаете при использовании сгенерированных скаффолдингов. Я хотел бы показать сообщения об ошибках валидации и выделить поля оскорбительной формы. Сейчас все, что я получаю, это стандартный вывод ошибок разработки. Первоначально это работало над моим приложением, но каким-то образом оно было потеряно.

1 Ответ

6 голосов
/ 30 марта 2009

Когда ваш сервер обнаруживает ошибку в рабочем режиме, он отображает страницу ошибки по умолчанию на рельсах, а не трассировку стека, которую вы видите в режиме разработки.

Вы можете добавить пользовательские статические html 500 или 404 страницы ошибок, поместив их в public / 500.html и public / 404.html.

Если вы хотите обрабатывать ошибки по-другому, вы можете поместить следующий код в ApplicationController (этот код не проверен, но основан на очень похожем методе в одном из моих проектов):

around_filter :handle_errors

def handle_errors
  begin
    yield
   rescue Exception => e
     # Handle the exception however you wish.
   end
end

Обратите внимание, что код выше не будет обрабатывать 404 ошибки. Однако вы можете указать действие по умолчанию для обработки маршрутов, которые не могут быть найдены, поместив следующее в конец config / rout.rb:

map.connect '*path', :controller => 'home', :action => 'page_not_found'

Edit:

После более подробного изучения существует альтернативный и, вероятно, лучший способ пользовательской обработки ошибок: http://brian.pontarelli.com/2007/01/14/handling-rails-404-and-500-errors/. По существу, рекомендуется переписать метод rescue_action_in_public, как показано ниже:

  def rescue_action_in_public(exception)
    render :template => "shared/error", :layout => "standard", :status => "500"
  end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...