将额外参数传递给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]