Sto ignorando il controller devise_invitable
e nel mio metodo di creazione vorrei passare valori aggiuntivi al modello di email invitations_instructions
. Per esempio il nome del gruppo, qualcuno ha avuto successo con questo, in tal caso per favore dammi qualche indizio qui.passa le var di istanze extra a devise_invitable modello di posta elettronica
quello che ho provato ...
mia @group
nel mio Users::InvitesController < Devise::InvitationsController
metodo create non è definito nel modello di e-mail.
provato ad aggiungere :skip_invitation => true
nella mia creare e quindi inviare l'e-mail manualmente come ...
self.resource = resource_class.invite!(params[resource_name], current_inviter, :skip_invitation => true)
::Devise.mailer.invitation_instructions(self.resource).deliver
ma questo dà il numero errato di argomenti per cui v'è qualcosa che non sto leggendo correttamente dalla documentazione.
AGGIORNAMENTO - possibile soluzione
L'unico modo sembra essere questo, ma io sono curioso di sapere se c'è un modo migliore che utilizza i modelli forniti e elaborare mailer
nei miei /app/controller/users/InvitesController#create
(eredita da InvitationsController
)
self.resource = resource_class.invite!(params[resource_name], current_inviter) do |u|
u.skip_invitation = true
end
UserMailer.invitation_instructions(self.resource, current_inviter, @object).deliver
dove UserMailer
è il mio generale (standard) mailer azione e va qualcosa di simile ...
def invitation_instructions(resource, inviter, object)
@resource = resource
@object = object
@inviter = inviter
mail(:to => resource.email, :subject => 'New invitation from ' + inviter.first_name)
end
La soluzione offerta nell'aggiornamento funziona. Ma non sembra molto pulito. Mi piacerebbe anche una soluzione più pulita. Un modo potrebbe essere quello di applicare devise_invitable e ridefinire 'invite!' Per accettare più opzioni. – Guillaume
@ andrew-lank si prega di estrarre l'aggiornamento in risposta e accettarlo. –