Hi everyone,
I’m having trouble accessing instance vars passed to my email template
as part of an explicit multipart message, and I wonder if anyone here
could help me.
The task at hand is to deliver email with only the text/html content
type if the message lacks a plaintext (from a record in the db) and to
send multipart email if it has both plaintext & html available.
Here’s the simplified code from the mailer:
#SampleMailer.rb
def email(recipient, content)
subject content.title
recipients recipient.email
from '[email protected]'
headers 'return-path' => '[email protected]'
sent_on Time.now
if context.plaintext.empty? # force HTML email if the module
lacks plaintext
content_type ‘text/html’
body :content => content, :user => recipient
else # send a multi-part email
part “text/plain” do |p|
p.body = render_message(“email_plain”, :content =>
content, :user => recipient)
p.transfer_encoding = “base64”
end
part “text/html” do |p|
p.body = render_message(“email”, :content =>
content, :user => recipient)
end
end
end
This works fine if content.plaintext is empty – it properly delivers
the HTML-only email. If however, content.plaintext is not empty (ie,
it should send a multipart message), the template throws an error.
For a template like:
email.erb
<%= @content.title %>
The error is:
NoMethodError (You have a nil object when you didn’t expect it! The
error occurred while evaluating nil.title)
Thank you for your help in looking at this. I’m much obliged for any
advice you can offer.
Sincerely,
Jacob