Je remplace le contrôleur devise_invitable
et dans ma méthode de création, je souhaite transmettre des valeurs supplémentaires au modèle d'e-mail invitations_instructions
. Par exemple, le nom du groupe, est-ce que quelqu'un a réussi à cela, si oui, s'il vous plaît donnez-moi quelques indices ici.transmettre des instances supplémentaires vars au modèle d'email de devise_invitable
ce que j'ai essayé ...
mon @group
dans ma méthode Users::InvitesController < Devise::InvitationsController
créer est pas défini dans le modèle de courrier électronique.
essayé d'ajouter :skip_invitation => true
dans mon créer puis envoyer l'e-mail comme manuellement ...
self.resource = resource_class.invite!(params[resource_name], current_inviter, :skip_invitation => true)
::Devise.mailer.invitation_instructions(self.resource).deliver
mais cela donne le mauvais nombre d'arguments donc il y a quelque chose que je ne suis pas lire correctement à partir de la documentation.
MISE A JOUR - solution possible
La seule façon semble être, mais je suis curieux de savoir s'il y a une meilleure façon qui utilise les modèles fournis et concevoir mailer
dans mes /app/controller/users/InvitesController#create
(Hérite de 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
où UserMailer
est mon action générale (standard) mailer et va quelque chose comme ...
def invitation_instructions(resource, inviter, object)
@resource = resource
@object = object
@inviter = inviter
mail(:to => resource.email, :subject => 'New invitation from ' + inviter.first_name)
end
Votre solution proposée dans la mise à jour fonctionne. Mais ce n'est pas très propre. J'apprécierais également une solution plus propre. Une solution pourrait être de patcher devise_invitable et de redéfinir 'inviter! 'Pour accepter plus d'options. – Guillaume
@ andrew-lank s'il vous plaît extraire vous mettre à jour en réponse et l'accepter. –