ActionMailer Versanddaten nil


#1

Hallo,

ich kriege bei einem Objekt, das ich an das Mailer-Template weitergebe,
nil.
Aber ich verstehe nicht, warum das so ist.

Mein Mailer-Objekt sieht so aus:

class ContactMailer < ActionMailer::Base

def message(contact_data)
@subject = ‘Formular gti-coaching.de
@body = { :contact_data => contact_data }
@recipients = ‘removed_email_address@domain.invalid’
@from = ‘removed_email_address@domain.invalid’
@sent_on = Time.now
@headers = { ‘Reply-to’ => contact_data.email }
end
end

Wenn ich contact_data im Mailer-Objekt abfrage, ist es auch da. Es wird
also an
die Methode message übergeben. Aber im Template message.html.erb erhalte ich
kein lokales Objekt contact_data.

Da erhalte ich dann:

undefined local variable or method `contact_data’ for
#ActionView::Base:0x1fcc348

Woran kann das denn liegen?

Viele
Grüße
Michael K.


#2

Moin Michael,

rufe bei mir die übergebenen Objekte dann mit @ auf, bei dir
wäre das ja dann @contact_data in der View, dann sollte es
gehen.

Viele
Grüße,
Daniel

Am 11.01.2009 um 11:45 schrieb Michael K.:


#3

Na ja, das ist der Workaround, den ich verwende. Aber mir wäre es lieber,
wenn
es so wie in der API vorgesehen, über lokale Variablen gehen
würde.
Viele
Grüße
Michael K.

Daniel Boekhoff schrieb:


#4

Hi,

Da wart ihr mit dem @ schon mal nah dran, nur dass es
anders rum ist. Lösch die @ aus deiner message Methode raus
und dann schaut’s eher aus wie in der API.

ciao, tom


Thomas R. “TomK32” Koll <> http://ananasblau.com
just a geek trying to change the world
http://github.com/TomK32


#5

Hallo Michael.

Michael K. schrieb:

Na ja, das ist der Workaround, den ich verwende. Aber mir wäre es
lieber, wenn es so wie in der API vorgesehen, über lokale Variablen
gehen würde.

Die Verwendung von Instanzvariablen im View stellt keinen Workaround
dar, sondern ist tatsächlich so vorgesehen:

http://api.rubyonrails.org/classes/ActionMailer/Base.html
“So, for example, body :account => recipient would result in an instance
variable @account with the value of recipient being accessible in the
view.”

Viele
Grüße,Sebastian


#6

Das hatte ich natürlich auch schon ausprobiert. Die Instanzvariablen hatte
ich
noch aus alter Gewohnheit im Mailer stehen. Das ändert aber nichts daran,
daß
das Objekt nicht ans Template weitergegeben wird.

Thomas R. Koll schrieb: