Пользовательская страница ошибки в Rails для конкретных действий - PullRequest
1 голос
/ 07 декабря 2010

У меня есть контроллер MyController, который по некоторым его действиям не может вернуть полные HTML-страницы, а только содержимое без тегов HTML / HEAD / BODY ....

По умолчанию страницы ошибок: 500.html и т. Д. Действительно являются полными HTML-страницами, и для этих MyController: действия, которые мне нужно каким-то образом получить для страниц ошибок в неполном формате.

Одинспособ сделать это:

Переопределить «render_optional_error_file ()» внутри MyController и перенаправить в случае, если действие является одним из моих специальных действий для другой версии страниц с ошибками (только для содержимого, не полных тегов страницы).

Будет ли это работать?Есть ли другой выход?

Кстати: я работаю с рельсами 2.3.9.

Спасибо, Эрез

1 Ответ

0 голосов
/ 07 декабря 2010

Это немного сложная проблема, особенно в случае ошибки 500.Поскольку 500 будет отображаться при обнаружении приложения и возникновении ошибки, вы не можете / не должны иметь динамическую страницу, которая обрабатывается контроллером - так как этот контроллер может быть источником проблемы.

Однако,в случае 404 вы можете настроить ErrorsController с действием 404 и использовать другой макет в зависимости от того, был ли запрос запросом XHR или нет.

Тогда все, что вам нужно, - это методв вашем ApplicationController, например:

def render_404
  render "errors/404", :status => 404
end

, что позволит вам вызывать ваш собственный обработчик ошибок в любом месте.

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

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