Переадресация вокруг фильтра после действия - PullRequest
0 голосов
/ 18 октября 2010

Я использую обходной фильтр, который в некоторых случаях должен перенаправлять пользователя на другой путь ПОСЛЕ действия, полученного (заканчивающегося с рендерингом или перенаправлением).

Запись redirect_to в фильтре после выходаоператор приводит к двойной ошибке рендеринга.Попытка «перенастроить» объект ответа (установив body в nil и location заголовок для нужного URL) приводит к ошибке (взятой из спецификаций контроллера):

Failure/Error: Unable to find matching line from backtrace
You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.each

Кто-нибудь сделал что-нибудь подобное?

Ответы [ 2 ]

1 голос
/ 25 октября 2010

На самом деле мне удалось сделать перенаправление вокруг фильтра после действия. Вам просто нужно переопределить атрибут response.location и сбросить response.status на 302 (вместо 200).

0 голосов
/ 18 октября 2010

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

...