如何嵌套devise_invitable路由以邀请用户访问特定项目
问题
我在项目管理网络应用程序上使用devise
和devise_invitable
gem。 我成功邀请新用户加入网络应用。
但我需要的是邀请新用户参与特定项目,而无法弄清楚如何做到这一点。 我需要将项目ID作为路径的一部分,以便我可以正确连接控制器代码。
上下文
相关routes.rb
部分如下:
devise_for :users, :controllers => { :invitations => "invitations" }
所以:
-
users/invitation/new
作品的新邀请。 - 我自己的
invitations_controller.rb
会覆盖默认的InvitationsController
-
我有
:projects
作为我正在使用的资源,例如resources :projects do resources :milestones, :task ... etc end
(我认为)我希望做出类似这样的工作:
users/invitation/projects/4f3423d34323/new
目前的方法是使用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
(用于邀请新用户访问web app +项目)
invitations_controller#new
:project_id
检查是否存在:project_id
并为Case 1或2调用适当的行为。