devise_inviable,删除待处理的邀请
devise_inviable, delete pending invitation
我有一个 Rails 应用程序,其中 Users
可以邀请 Members
到 Teams
,为此我尝试使用 gem devise_invitable
。到目前为止它运行良好,但在删除待处理邀请时我遇到了一些问题 运行。例如,如果用户输入了错误的电子邮件地址,我希望他/她能够删除邀请。但我无法让它工作。我的路线是这样设置的:
devise_for :users, :controllers => {sessions: "users/sessions", registrations: "users/registrations", invitations: "users/invitations"}
resources :teams do
resources :invitations
[...]
我的自定义 "users/invitations"
(放置在 controllers/users/invitations_controller.rb)控制器的相关部分如下所示:
class Users::InvitationsController < Devise::InvitationsController
before_action :set_invitation, only: [:destroy]
def destroy
This currently never gets called
team = @invitation.team
@invitation.destroy
respond_to do |format|
format.html { redirect_to edit_team_path(team) }
format.json { head :no_content }
end
end
我尝试 link destroy
这样的操作:
= link_to team_invitation_path(@team, invitation), method: :delete, data: { confirm: 'Are you sure you want to delete this invitation?'}, class: "label label-danger label-pill pull-xs-right" do
= icon("trash-o")
我的 Invitation
模型如下所示:
class Invitation < ActiveRecord::Base
belongs_to :member
belongs_to :team
validates_presence_of :recipient_email
enum status: [ :pending, :accepted ]
end
我目前在点击 link 时出现以下错误:
Routing Error
uninitialized constant InvitationsController
我不完全确定如何解决它或我可能错过了什么。不是 100% devise_invitable
是适合我现在需要的 gem。
有什么想法可以让它发挥作用吗?
我运行宁rake routes
后的相关路线:
# These were here before as well
accept_user_invitation GET /users/invitation/accept(.:format)
users/invitations#edit
remove_user_invitation GET /users/invitation/remove(.:format) users/invitations#destroy
user_invitation POST /users/invitation(.:format) users/invitations#create
new_user_invitation GET /users/invitation/new(.:format) users/invitations#new
# My custom / new team invitation routes
team_invitations
GET /teams/:team_id/invitations(.:format) users/invitations#index
POST /teams/:team_id/invitations(.:format) users/invitations#create new_team_invitation
GET /teams/:team_id/invitations/new(.:format) users/invitations#new edit_team_invitation
GET /teams/:team_id/invitations/:id/edit(.:format) users/invitations#edit team_invitation
GET /teams/:team_id/invitations/:id(.:format) users/invitations#show
PATCH /teams/:team_id/invitations/:id(.:format) users/invitations#update
PUT /teams/:team_id/invitations/:id(.:format) users/invitations#update
DELETE /teams/:team_id/invitations/:id(.:format) users/invitations#destroy
新路线指向例如users/invitations#destroy
我假设您正试图指向 Users::InvitationsController
,它与 InvitationsController
不同——后者不存在。您需要将此事告知 routes.rb
:
resources :teams do
resources :invitations, module: 'users'
...
end
end
我有一个 Rails 应用程序,其中 Users
可以邀请 Members
到 Teams
,为此我尝试使用 gem devise_invitable
。到目前为止它运行良好,但在删除待处理邀请时我遇到了一些问题 运行。例如,如果用户输入了错误的电子邮件地址,我希望他/她能够删除邀请。但我无法让它工作。我的路线是这样设置的:
devise_for :users, :controllers => {sessions: "users/sessions", registrations: "users/registrations", invitations: "users/invitations"}
resources :teams do
resources :invitations
[...]
我的自定义 "users/invitations"
(放置在 controllers/users/invitations_controller.rb)控制器的相关部分如下所示:
class Users::InvitationsController < Devise::InvitationsController
before_action :set_invitation, only: [:destroy]
def destroy
This currently never gets called
team = @invitation.team
@invitation.destroy
respond_to do |format|
format.html { redirect_to edit_team_path(team) }
format.json { head :no_content }
end
end
我尝试 link destroy
这样的操作:
= link_to team_invitation_path(@team, invitation), method: :delete, data: { confirm: 'Are you sure you want to delete this invitation?'}, class: "label label-danger label-pill pull-xs-right" do
= icon("trash-o")
我的 Invitation
模型如下所示:
class Invitation < ActiveRecord::Base
belongs_to :member
belongs_to :team
validates_presence_of :recipient_email
enum status: [ :pending, :accepted ]
end
我目前在点击 link 时出现以下错误:
Routing Error
uninitialized constant InvitationsController
我不完全确定如何解决它或我可能错过了什么。不是 100% devise_invitable
是适合我现在需要的 gem。
有什么想法可以让它发挥作用吗?
我运行宁rake routes
后的相关路线:
# These were here before as well
accept_user_invitation GET /users/invitation/accept(.:format)
users/invitations#edit
remove_user_invitation GET /users/invitation/remove(.:format) users/invitations#destroy
user_invitation POST /users/invitation(.:format) users/invitations#create
new_user_invitation GET /users/invitation/new(.:format) users/invitations#new
# My custom / new team invitation routes
team_invitations
GET /teams/:team_id/invitations(.:format) users/invitations#index
POST /teams/:team_id/invitations(.:format) users/invitations#create new_team_invitation
GET /teams/:team_id/invitations/new(.:format) users/invitations#new edit_team_invitation
GET /teams/:team_id/invitations/:id/edit(.:format) users/invitations#edit team_invitation
GET /teams/:team_id/invitations/:id(.:format) users/invitations#show
PATCH /teams/:team_id/invitations/:id(.:format) users/invitations#update
PUT /teams/:team_id/invitations/:id(.:format) users/invitations#update
DELETE /teams/:team_id/invitations/:id(.:format) users/invitations#destroy
新路线指向例如users/invitations#destroy
我假设您正试图指向 Users::InvitationsController
,它与 InvitationsController
不同——后者不存在。您需要将此事告知 routes.rb
:
resources :teams do
resources :invitations, module: 'users'
...
end
end