Hello everyone, while attempting to figure out how to render an inline template as body of a mail message in an ActionMailer I am somewhat lost and hope that somebody on the list can point me into the right direction. My current code looks like this (with minor deletions to improve readability): -- 8< -- class RegistrationMailer < ActionMailer::Base def confirmation(registration) recipients "#{registration.full_name} <#{registration.email}>" from "<#{registration.event.organizer_alias_email}>" sent_on Time.now tmpl = registration.event.registration_confirmation_template subject tmpl.subject part "text/plain" do |p| p.body render :inline => tmpl.body, :registration => registration end end end -- 8< -- Unfortunately, calling render throws an exception about a nil object: | You have a nil object when you didn''t expect it! | You might have expected an instance of Array. | The error occurred while evaluating nil.each -- 8< -- /var/lib/gems/1.8/gems/actionpack-2.3.4/lib/action_view/base.rb:310:in `_evaluate_assigns_and_ivars'' /var/lib/gems/1.8/gems/actionpack-2.3.4/lib/action_view/renderable.rb:31:in `send'' /var/lib/gems/1.8/gems/actionpack-2.3.4/lib/action_view/renderable.rb:31:in `render'' /var/lib/gems/1.8/gems/actionpack-2.3.4/lib/action_view/base.rb:301:in `with_template'' /var/lib/gems/1.8/gems/actionpack-2.3.4/lib/action_view/renderable.rb:30:in `render'' /var/lib/gems/1.8/gems/actionpack-2.3.4/lib/action_view/base.rb:264:in `render'' /var/lib/gems/1.8/gems/actionmailer-2.3.4/lib/action_mailer/base.rb:567:in `render'' /raid/home/tg/workspace/MHNVeranstaltungen/app/models/registration_mailer.rb:30:in `confirmation'' /var/lib/gems/1.8/gems/actionmailer-2.3.4/lib/action_mailer/part_container.rb:28:in `part'' /raid/home/tg/workspace/MHNVeranstaltungen/app/models/registration_mailer.rb:28:in `confirmation'' -- 8< -- Line 310 maps to the "elsif" branch in base.rb, so most likely controller.request.template_format is nil: | def template_format | if defined? @template_format | @template_format | elsif controller && controller.respond_to?(:request) | @template_format = controller.request.template_format.to_sym | else | @template_format = :html | end | end But, what would be the right way to set it? I know that my approach somewhat violates the MVC pattern. An alternative would probably be to call render from within the corresponding view. Thanks, Thilo -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.