2011-07-01 2 views
0

J'ai donc écrit un mailer intitulé UserMailer contenant une méthode intitulée test. La méthode accepte deux paramètres: user (objet) et recipient (email).Mailer Broken from Controller

De la console je peux envoyer l'expéditeur avec la commande UserMailer::deliver_test(User.find(1), '[email protected]') et l'email envoie avec succès.

Mais si je définis une même commande ou sa contrepartie UserMailer.test(User.find(1), '[email protected]').deliver dans users#mail, l'accès à l'action via users/mail ne renvoie rien.

Que dois-je faire pour que le contrôleur déclenche la distribution correctement?

Répondre

1

Vous avez juste besoin d'appeler la méthode de classe de mailer à l'intérieur de votre contrôleur

UserMailer.deliver_test(User.find(1), '[email protected]') 

ou d'instance de l'utilisateur de la méthode:

UserMailer.deliver_test(self, '[email protected]') 
+0

I a déjà la méthode de classe de l'mailer à l'intérieur du contrôleur comme ' UserMailer.test.deliver' mais après le passage à 'UserMailer.deliver_test' cela fonctionne. Quelle est la différence? – fny

+0

Je crois que le format 'test.deliver' est spécifique à Rails 3, alors que' deliver_test' est pour Rails 2. Êtes-vous sur Rails 2? –

+0

Nevermind ... Ils ont soudainement commencé à fonctionner après un redémarrage du serveur. : P – fny