我正在尝试为多个提供商实施Devise和Ominauth。一种情况是:用户首次使用Twitter登录而不先创建帐户。
为了解决这个问题,我将用户从回调链接(/auth/twitter/callback
)重定向到注册页面以填写电子邮件地址。
但是,我想将回调链接{:provider => "twitter", :uid =>"123"}
中的身份验证信息带到注册页面(new_registration_path
)。然后,当用户提交注册表单时,将与帐户信息一起捕获身份验证。
我应该怎么做呢?我试过了
redirect_to(new_user_session_path, {:service => service})
其中service = {:provider => "twitter", :uid =>"123"}
但服务并没有作为一个参数传递。
我做错了什么?我是否需要修改Devise的源代码?
谢谢。
答案 0 :(得分:1)
你可能正在寻找这个:
redirect_to(new_user_session_path(:argument => "value"))
在重定向后的控制器中(可能是UserSessions#new),您可以使用以下命令访问参数:
params[:argument]
您需要将参数传递给路径助手而不是redirect_to方法。
在你的例子中应该是:
redirect_to(new_user_session_path(service))
在重定向后的控制器中(可能是UserSessions#new),您可以使用以下命令访问参数:
params[:provider]
params[:uid]
或
redirect_to(new_user_session_path(:service => service))
和
params[:service][:provider]
params[:service][:uid]