Подтвердить что ты не робот

Rails: рендер и выход немедленно

Используя камень omniauth, я вынужден определить обратный вызов одного маршрута для успешных логинов, независимо от поставщика:

def auth_callback 

        auth_data = request.env['omniauth.auth']

        if auth_data.has_key('something')
            process_one(auth_data)
        else
            process_two(auth_data)
        end

        # No view is available here

end


def process_one
    # do something then render view for process_one
    return
end

def process_two
    # do something then render view for process_two
    return
end

Как я могу предотвратить возврат контроллера к методу auth_callback и попытаться отобразить соответствующее представление (которого не существует)? Лечение должно считаться полным после возврата методов process_one или process_two.

4b9b3361

Ответ 1

Почему бы специально не называть render в этих методах?

def process_one
 # do something then render view for process_one
 render :process_one and return
end

Rails должен обнаружить, что вы уже запустили его, а не пытаетесь снова выполнить рендеринг.