0

自定义注册路线后,我的设计有问题。设计文档提到,可以轻松自定义路由,因此我尝试在 URL 中添加一个令牌以设置一个简单的邀请系统。真的很简单,我所做的只是添加

devise_for :users, :path_names => { :sign_up => "signup/:invitation_token" }

到我的路线。一个邮寄者发送一封带有令牌的电子邮件,我在里面通过

new_user_registration_path(@invitation.token)

耙路线说

 new_user_registration GET    /users/signup/:invitation_token(.:format)     devise/registrations#new

但我仍然得到

 No route matches {:action=>"new", :controller=>"devise/registrations", :locale=>:de, :invitation_token=>nil}

无论我是否通过令牌,我都明白...

我不知道我错过了什么。在此先感谢,希望有人看到我做错了什么。

问候,罗伯

4

1 回答 1

1

检查@invitation.token以确保它不是nil.

您目睹的错误将发生在您传递nilnew_user_registration_path链接标签的任何视图上。

请记住,您需要覆盖 Deviseusers/registration控制器的默认行为,以使您的邀请系统正常工作。像这样的东西会起作用:

# routes.rb
devise_for :users, :path_names => { :sign_up => "signup/:invitation_token" }, :controllers => {:registrations => "users/registrations"}

# app/controllers/users/registrations_controller.rb
class RegistrationsController < Devise::RegistrationsController
    def create
        # add custom create logic here
    end
end
于 2013-03-08T22:28:19.547 回答