Можно ли отобразить другую страницу исключения, если запрос представляет собой запрос XmlHttpRequest? - PullRequest
1 голос
/ 30 августа 2009

Если в приложении Rails есть исключение, появляется страница ошибки со стеком вызовов, параметрами запроса и выдержкой из кода.

  1. Можно ли создать другой вывод, если запрос является запросом XHR?
  2. Можно ли вообще переопределить вывод исключения? (Я предполагаю, что это автоматически ответит на первый вопрос)

Ответы [ 2 ]

1 голос
/ 31 августа 2009

Вы можете попробовать переопределить rescue_action в вашем контроллере действий.

def rescue_action(exception)
  if request.xhr?
    custom_xhr_error_handling_for(exception)
  else
    super
  end
end

Более традиционный способ - использовать rescue_from Exception, :custom_xhr_error_handling_for, но это лишает вас возможности позволить коду по умолчанию выполнять грязную работу, если позже выясняется, что это не был ответ xhr.

1 голос
/ 30 августа 2009

Вы видите страницу с трассировкой только в режиме разработки, в то время как в рабочем режиме вы видите стандартную страницу с ошибкой (находится в public / 500.html), в которой просто говорится, что произошла ошибка.

Это делается из соображений безопасности и, конечно, не ограничивается рельсами: все платформы веб-приложений выполняют одно и то же, так как обратная трассировка может раскрывать конфиденциальную информацию (иногда случается, что вы видите сообщение об ошибке в веб-приложении отображение строки соединения с БД, или какого-то пароля, или чего-то подобного; ну, вы этого не хотите).

В режиме разработки при вызовах XHR вы по-прежнему получаете обратную трассировку (я использую firebug для отладки своих приложений, поэтому просто копирую ее и вставляю куда-нибудь).

В рабочем режиме вы можете обрабатывать ошибки XHR из вызова ajax, явно задав функцию, которая будет выполняться при ошибке, установив параметр: fail для таких функций, как remote_function.

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