将额外参数传递给Devise new_user_session_path

问题描述:

我正在尝试为多个提供者实现Devise和Ominauth。一种情况是:用户首次使用Twitter登录而不先创建帐户。将额外参数传递给Devise new_user_session_path

要处理此问题,我将用户从回叫链接(/auth/twitter/callback)重定向到注册页面以填写电子邮件地址。

但是,我想从回调链接{:provider => "twitter", :uid =>"123"}带来验证信息注册页面(new_registration_path)。然后,当用户提交注册表单时,认证将与帐户信息一起被捕获。

我应该怎么做呢?我试过

redirect_to(new_user_session_path, {:service => service}) 

其中service = {:provider => "twitter", :uid =>"123"} 但服务没有打通作为PARAMS通过。

我做错了什么?我需要修改Devise的源代码吗?

谢谢。

你probabbly寻找这样的:

redirect_to(new_user_session_path(:argument => "value")) 

而且在后重定向(可能UserSessions#新)控制器,你可以访问参数:

params[:argument] 

你需要传递参数给路径帮手不要redirect_to方法。

在你的榜样应该是:

redirect_to(new_user_session_path(service)) 

而且在后重定向(可能UserSessions#新)控制器,你可以访问参数:

params[:provider] 
params[:uid] 

redirect_to(new_user_session_path(:service => service)) 

params[:service][:provider] 
params[:service][:uid]