2012-02-19 59 views
4

問題

我使用的一個項目管理web應用程序devisedevise_invitable寶石。我正在成功邀請新用戶訪問網絡應用程序。如何巢devise_invitable路線,邀請用戶對特定項目

但我需要的是邀請新用戶到一個特定的項目並無法弄清楚如何做到這一點。我需要將項目ID作爲路由的一部分,以便我可以正確連接控制器代碼。

語境

相關routes.rb部分看起來像:

devise_for :users, :controllers => { :invitations => "invitations" } 

所以:

  • users/invitation/new作品新的邀請。
  • 我自己invitations_controller.rb覆蓋缺省InvitationsController
  • 我有:projects因爲我使用的資源,例如

(我認爲),我希望做這樣的工作:

users/invitation/projects/4f3423d34323/new 

回答

5

目前的方法是使用devise_scope指定路線:

devise_for :users, :controllers => { :invitations => "invitations" } 

devise_scope :user do 
    match "/projects/:project_id/invitations/new", :to => "invitations#new", :via => "get", :as => "new_project_invitation" 
end 

這意味着我可以使用:

案例1:users/invitation/new(邀請新用戶的網絡應用程序)

情況2:projects/:project_id/invitations/new(邀請新用戶的網絡應用程序+項目)

invitations_controller#new檢查的:project_id並調用存在適用於案例1或2的行爲。