2

我正在尝试在我的网站上创建用户注册视图和模型,但我遇到了一个小问题:

我正在使用设计和omniauth来使facebook连接功能正常工作,但我希望我的facebook用户在他们第一次登录时创建他们的密码,这也有效,我将他们重定向到填写的注册表单和他们只需要输入密码。但我希望他们转到名为 /views/registrations/new_facebook.html.erb 的第二个“注册表格”,他们只能输入密码,我还将添加一些其他信息,

我创建了正确的视图并对其进行了测试,但我不知道如何创建正确的路由来绕过设计默认值

match '/facebook' => 'registrations#new', :as => 'new_facebook_user_registration'

我相信问题在于匹配,因为那是不被认可的,

如果有人可以帮助我,那将是非常感谢,

我为 omniauth 添加了我的控制器代码:

class OmniauthCallbacksController < Devise::OmniauthCallbacksController
def all
user = User.from_omniauth(request.env["omniauth.auth"])
if user.persisted?
      flash[:success] = "Welcome back"
          sign_in_and_redirect user
else
  session["devise.user_attributes"] = user.attributes
  redirect_to new_facebook_user_registration_url
end
end
alias_method :facebook, :all

结尾

如何使 redirect_to new_facebook_user_registration_url 真正起作用?

4

2 回答 2

1
 devise_scope :user do 
 match "registrations/new_facebook" => "registrations#new_facebook" 
 end

这就是我在注册控制器中复制新方法并将其命名为 new_facebook 的解决方案,现在一切都按预期工作!

于 2012-08-10T14:55:12.170 回答
0

我认为问题在于您没有覆盖重定向到该路径的设计方法。同样根据设计文档,您的路线应该使用“devise_for”调用设置。

这是描述如何执行您要求执行的操作的 wiki 页面,尽管您可能需要一些自定义逻辑来处理不是 facebook 注册的情况。

https://github.com/plataformatec/devise/wiki/How-To:-Redirect-to-a-specific-page-on-successful-sign-up- (注册)

该页面的一些示例代码:

class RegistrationsController < Devise::RegistrationsController
  protected

  def after_sign_up_path_for(resource)
    '/an/example/path'
  end
end

和一个路线:

devise_for :users, :controllers => { :registrations => "registrations" }
于 2012-08-09T11:41:20.713 回答