Ich habe eine Rails App, in der Users
Members
zu Teams
einladen kann, um dies zu tun, habe ich versucht, den Edelstein devise_invitable
zu verwenden. Es hat bis jetzt gut funktioniert, aber ich habe einige Probleme beim Löschen von ausstehenden Einladungen bekommen. Wenn der Benutzer beispielsweise die falsche E-Mail-Adresse eingegeben hat, möchte ich, dass er die Einladung löschen kann. Aber ich kann es nicht zur Arbeit bringen. Meine Strecken ist wie folgt aufgebaut:devise_iniviable, löschen ausstehende Einladung
devise_for :users, :controllers => {sessions: "users/sessions", registrations: "users/registrations", invitations: "users/invitations"}
resources :teams do
resources :invitations
[...]
Die relevanten Teile meiner benutzerdefinierten "users/invitations"
(platziert in Controller/users/invitations_controller.rb) -Controller wie folgt aussieht:
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
Ich versuche, das zu verbinden die destroy
Aktion wie folgt aus:
= 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")
Mein Invitation
Modell sieht wie folgt aus:
class Invitation < ActiveRecord::Base
belongs_to :member
belongs_to :team
validates_presence_of :recipient_email
enum status: [ :pending, :accepted ]
end
ich zur Zeit die folgende Fehlermeldung, wenn ich auf den Link klicken:
Routing Error
uninitialized constant InvitationsController
ich nicht ganz sicher bin, wie es zu lösen oder, was ich verpasst haben kann. Nicht 100%, dass devise_invitable
das richtige Juwel für meine Bedürfnisse ist.
Irgendwelche Ideen, was ich tun kann, damit es funktioniert?
Meine relevanten Strecken nach rake routes
läuft:
# 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
Die neuen Routen weisen auf z.B. users/invitations#destroy
Danke, das schien etwas zu helfen, aber ich lief leider in ein anderes Problem. Ich bekomme jetzt stattdessen den folgenden Fehler: 'NoMethodError in Users :: InvitationsController # zerstören undefinierten Methodenname für nil: NilClass'. SCOPE_NAME: '# Proxy Mapname def RESOURCE_NAME devise_mapping.name Ende alias entwickeln resource_name' – Anders
So klingt wie es die Methode ist erreicht, wie man wollte, dann aber schlechte Dinge ergeben? Möglicherweise müssen sie eine andere Richtung gehen. Post 'Rake Routes' (vor der Änderung oben); Das wird mich wissen lassen, ob diese Änderung ratsam ist oder ob etwas anderes passiert. – GoGoCarl
Eigentlich wird meine 'destroy' Aktion nicht aufgerufen, stattdessen wird eine' devise_invitable' Methode aufgerufen, 'def resource_name', und der Fehler besagt, dass' devise_mapping.name' gleich null ist (devise_mapping ist nil). – Anders