Rails, обработка множественных перенаправлений

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

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

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

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


person Justin    schedule 23.03.2010    source источник


Ответы (1)


Посмотрите на источник ActionController#redirect_to помогает:

raise AbstractController::DoubleRenderError if response_body

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

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
person abstraktor    schedule 26.03.2011