使用omniauth gem,我不得不为成功登录定义一个单路由回调,而不管提供程序是什么:

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_回调方法并try 显示相应的视图(该视图不存在)?一旦过程1或过程2方法返回,治疗应视为完成.

推荐答案

为什么不在这些方法中特别调用render

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

Rails应该检测到您已经运行了它,而不是再次try 渲染.

Ruby-on-rails相关问答推荐

Rails HotWire和View Components:涡轮框架不会取代内容

DateTime的最小数据提交格式

引用连接 Rails 表中枚举的查询

如何使用继承类 (STI) 获取 Ruby on Rails 类中基类的实例

select2 未应用于所有下拉列表;它只适用于数据的最后一条记录

NoMethodError:Puma::Events:Class 的未定义方法字符串

NameError:未定义的局部变量或方法记录器

rails, activerecord, 获取当前连接规范

将 cookie 会话存储添加回 Rails API 应用程序

如何更改 Heroku 应用程序的 DATABASE_URL

如何在 Rails 应用程序中使用长 id?

删除链接在 Rails 3 视图中发送Get而不是Delete

Ruby 和 Ruby on Rails 离线 API 文档

如何在 RSpec 中包含 Rails 助手

有没有办法列出所有 belongs_to 关联?

在 Rails 路由中更改 id 参数

设计/Rails - 如何删除特定的 Flash 消息? (登录成功)

Dotenv 多行变量

您将如何解析 Ruby 中的 url 以获取主域?

rails路由中资源和资源之间的区别?