Rails, обрабатывающий множественные перенаправления - PullRequest
2 голосов
/ 23 марта 2010

У меня есть программа, в которой gem, facebooker, вызывает редирект, и в результате я вызываю редирект через redirect_back_or_default. Мой вопрос:

  1. Есть ли способ отловить ошибку многократного перенаправления? Кажется, что блок начала / спасения этого не делает.
  2. Или, есть ли способ проверить, был ли уже вызван редирект, поэтому я не вызываю следующий?

На данный момент я не хочу модифицировать гем facebooker, так что, по вашему мнению, лучший способ справиться с этим?

Спасибо всем, Джастин

1 Ответ

2 голосов
/ 27 марта 2011

Посмотрите на источник ActionController # redirect_to выручает:

raise AbstractController::DoubleRenderError if response_body

Вы можете спасти Исключение следующим образом (и просто оставить строку журнала вне):

class TesterController < ApplicationController
  #I am redirecting ever to index.html
  def index
   redirect_to '/index.html'

   redirect_to '/tester/index'
  rescue AbstractController::DoubleRenderError
   Rails.logger.info "I redirected two times at least but the user doesn't know"
  end
end

или вы можете проверить (на мой взгляд, это нет хорошей практики ) для response_body, аналогично тому, что делает ActionController:

class TesterController < ApplicationController
  def index
   redirect_to '/index.html'

   redirect_to '/tester/index' unless response_body
  end    
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...