cannot access instance variable in mailer view

Action Mailer is detecting my HTML view but not evaluating any instance variables I'm referencing in it. Here is my mailer:

class Emailer < ActionMailer::Base

  def send_default(recipient, subject, message, sent_at)     @body = message     mail(:to => recipient, :subject => subject)   end

end

I have a view called

<!DOCTYPE html> <html>   <head>     <meta content="text/html; charset=UTF-8" http-equiv="Content- Type" />   </head>   <body>     This is an HTML email: <br />     <%= @body %>     <br />     End of the body.   </body> </html>

When I receive the email in Gmail, here is all I see:

This is an HTML email:

End of the body.

Nothing is outputted between those 2 sentences! Any ideas as to what's happening? I verified that in the mailer method, @body has a value. I'm using Rails 3.0.7 and Ruby 1.9.2 and following this guide:

Action Mailer is detecting my HTML view but not evaluating any

instance variables I’m referencing in it. Here is my mailer:

class Emailer < ActionMailer::Base

def send_default(recipient, subject, message, sent_at)

@body = message

mail(:to => recipient, :subject => subject)

end

end

I have a view called

<meta content="text/html; charset=UTF-8" http-equiv="Content-

Type" />

This is an HTML email: <br />

<%= @body %>

<br />

End of the body.

Hmmm… I just checked as I am doing just about the same thing. Your code looks ok, the only difference with mine is I am naming the class variable @body_text. I am wondering if @body for you might be getting renamed somewhere? Its a long shot but try renaming the variable. Also, you can put a break point inside the mailer view I think — <%= debugger; @body %>… then you can really see what is getting in there.

David, that's exactly what I did to solve the problem! I renamed the instance variable and started seeing my string inserted into the email. Using @body was definitely an issue for some reason.

Thanks, Stephen

David, that’s exactly what I did to solve the problem! I renamed the

instance variable and started seeing my string inserted into the

email. Using @body was definitely an issue for some reason.

Great… I vaguely recall that I had the same issue, hence the name. I think I decided that @body must be reserved or used by rails somewhere. Anyhow, glad it helped!