Ruby on rails 找不到设计注册URL

Ruby on rails 找不到设计注册URL,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-3.2,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 3.2,我有一个问题,设计后定制的注册路线。 Desive文档提到,路由可以很容易地定制,所以我尝试在URL中添加一个令牌来建立一个简单的邀请系统。这很直截了当,我所做的只是添加 devise_for :users, :path_names => { :sign_up => "signup/:invitation_token" } 我的路线。一个邮递员发送一封带有令牌的电子邮件,里面有我的通行证 new_user_registration_path(@invitation.token)

我有一个问题,设计后定制的注册路线。 Desive文档提到,路由可以很容易地定制,所以我尝试在URL中添加一个令牌来建立一个简单的邀请系统。这很直截了当,我所做的只是添加

devise_for :users, :path_names => { :sign_up => "signup/:invitation_token" }
我的路线。一个邮递员发送一封带有令牌的电子邮件,里面有我的通行证

new_user_registration_path(@invitation.token)
rake说

 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}
不管我是否传递令牌,我都明白

我不是舒尔,我错过了什么。 提前谢谢,希望有人看到我做错了什么


问候,Rob

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

在将
nil
传递到
new\u user\u registration\u path
链接标记的任何视图中,都会出现您看到的错误

请记住,为了使邀请系统正常工作,您需要覆盖Desive的
用户/注册
控制器的默认行为。类似这样的方法会奏效:

# 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
#routes.rb
设计用于:用户,:路径\u名称=>{:注册=>“注册/:邀请\u令牌”},:控制器=>{:注册=>“用户/注册”}
#app/controllers/users/registrations\u controller.rb
类注册控制器<设计::注册控制器
def创建
#在此处添加自定义创建逻辑
结束
结束

您看过了吗?谢谢。我会试试看,但我也想知道我做错了什么。