将其他参数传递给Devise new_user_session_path

时间:2013-02-23 02:37:22

标签: ruby-on-rails devise twitter omniauth

我正在尝试为多个提供商实施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的源代码?

谢谢。

1 个答案:

答案 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]