2013-03-04 91 views
0

我在定製註冊 - 路由後遇到設計問題。 devise doc提到,路由可以很容易地自定義,所以我試圖在URL中添加一個令牌來建立一個簡單的邀請系統。 Ist真的很直接,我所做的只是添加設計註冊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} 

我把它閹我通過令牌或不...

我不舒服我失蹤。 在此先感謝,希望有人看到我做錯了什麼。

映入眼簾,羅布

+1

你看過[devise_invitable](https://github.com/scambra/devise_invitable)嗎? – 2013-03-04 20:59:17

+0

謝謝你。我會嘗試,但我也想明白,我做錯了什麼。 – Rob 2013-03-05 08:49:36

回答

1

檢查@invitation.token,以確保它不是nil

您正在目擊的錯誤將出現在您將nil傳入您的new_user_registration_path鏈接標記的任何視圖中。

請記住,您需要覆蓋Devise的users/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