Forum: Rails Germany ActionMailer Versanddaten nil

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
9e0ec2384dd80c7f2c190e02e596e15b?d=identicon&s=25 Michael Kastner (Guest)
on 2009-01-11 11:46
(Received via mailing list)
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 = 'kastner@galt.de'
     @from       = 'kastner@galt.de'
     @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 Kastner
83ee42c334db22cd7b6f1ad38ec32414?d=identicon&s=25 Daniel Boekhoff (Guest)
on 2009-01-11 14:53
(Received via mailing list)
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 Kastner:
9e0ec2384dd80c7f2c190e02e596e15b?d=identicon&s=25 Michael Kastner (Guest)
on 2009-01-11 14:57
(Received via mailing list)
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 Kastner

Daniel Boekhoff schrieb:
978ed7ca309d5495078702096f9add03?d=identicon&s=25 Thomas R. Koll (Guest)
on 2009-01-11 15:12
(Received via mailing list)
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
9e0ec2384dd80c7f2c190e02e596e15b?d=identicon&s=25 Michael Kastner (Guest)
on 2009-01-11 15:17
(Received via mailing list)
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:
0ff286c8f553889ab44a5dc32646438f?d=identicon&s=25 Sebastian Roebke (Guest)
on 2009-01-11 16:27
(Received via mailing list)
Hallo Michael.

Michael Kastner 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
This topic is locked and can not be replied to.