2010-03-23 3 views
2

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

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

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

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

ответ

2

Взгляд на источник 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_bod y аналогично действию ActionController:

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

    redirect_to '/tester/index' unless response_body 
    end  
end 
Смежные вопросы