2010-01-23 14 views

Répondre

7

Si vous souhaitez accéder à une variable d'instance dans votre modèle de mailer alors dans votre modèle mailer ajouter

@body[:user] = user_object 

Ce qui précède créer une instance @user variable qui peut être consulté en ta vue. Vous devriez pouvoir accéder à l'objet utilisateur dans votre vue mailer en faisant

@user 

Les docs here ont des exemples de façons alternatives si vous utilisez plusieurs formats (text/html).

+1

Salut, je suis un peu confus les exemples montrent l'affectation directe de la value @account = destinataire par exemple .... est-ce que ça marche? Ce n'est pas pour moi ... je me demande donc si votre façon de @body [: user] est de créer @user. – Angela

+2

cela me donne le attendu "vous avez essayé d'appeler [] sur l'erreur nil (@body)". @nas - conseillez-vous que cette ligne soit @body [: user] = user_object définie ci-dessus et en dehors des méthodes dans le modèle mailer? –

2

Pour passer une variable à la vue/corps de courrier électronique, vous les envoyer via la méthode du corps :-) So, for example, body :account => recipient entraînerait une variable d'instance @account avec la valeur de recipient étant accessible à la vue.

4

I Rails 3, le processus est similaire:

@user = user_object 

Ce qui précède créer une instance @user variable qui peut être consulté à votre avis. Vous devriez pouvoir accéder à l'objet utilisateur dans votre vue mailer en faisant

@user 

Notez que vous devez définir cette variable avant la

mail(:from => "[email protected]", :to => recipient, :subject => "Subject") 
+1

"Notez que vous devez définir cette variable avant le mail (..." - cela m'a vraiment aidé. – netricate