Dear all, I am trying to understand the following behaviour of the ActionMailer in Rails 2. I have an emailer_controller.rb class EmailerController < ApplicationController def send_mail Emailer::deliver_contact_email(params[:email]) end end I have a model emailer.rb class Emailer < ActionMailer::Base def contact_email(email_params, sent_at = Time.now) @recipients = "webmaster-hcDgGtZH8xNBDgjK7y7TUQ@public.gmane.org" @from = email_params[:name] + " <" + email_params[:address] + ">" @subject = email_params[:subject] @sent_on = sent_at @body["email_body"] = email_params[:body] @body["email_name"] = email_params[:name] end end and I send from within a form <%= form_tag :action=> "send_mail", :controller=> "emailer" %> ... some details deleted here ... <input type="submit" value="Send" class="primary" /> <%= %> and I have a send_mail.html.erb template with some content (thanx for your mail...) In this setup I get an error: Missing template emailer/ contact_email.html.erb When I add an empty template of that name, everything works nicely. My question is: WHY do I need a template with the same name as a method in the model? So far as I understand Ruby, I am expected to have a template for the controller method - but why for the model. And: If I put some content into that file it is not displayed. So: What happens with the content in emailer/contact_email.html.erb ? Thanx for helping out. --~--~---------~--~----~------------~-------~--~----~ 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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
On Oct 25, 6:30 pm, X <c...-MrQZHDg9DaLQT0dZR+AlfA@public.gmane.org> wrote:> In this setup I get an error: Missing template emailer/ > contact_email.html.erb > > When I add an empty template of that name, everything works nicely. > > My question is: WHY do I need a template with the same name as a > method in the model? So far as I understand Ruby, I am expected to > have a template for the controller method - but why for the model.Where do you thing the content for the email is coming from? Just as actions in a controller are backed by template files so are methods in an ActionMailer object.> > And: If I put some content into that file it is not displayed. > > So: What happens with the content in emailer/contact_email.html.erb ? >It should form the body of the email sent. Fred --~--~---------~--~----~------------~-------~--~----~ 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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
> It should form the body of the email sent.Ah, okay. Great concept and actually I now realize all testmails were empty... But this just leads to the next problem: Shouldn''t I have access to the variables set in the model? Sorry probably I am doing something very stupid... With both templates set to We mail: Recipients: <%= @recipients %> From: <%= @from %> Subject: <%= @subject %> Sent on: <%= @sent_on %> I just get the text and NO access to the model neither in the one nor in the other file. --~--~---------~--~----~------------~-------~--~----~ 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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Ok, solved the first subpart. In contact_email.html.erb I do not have access to all variables of the mode but only to the contents of the hash @body. So this is working: Body: <%= @email_body %> Name: <%= @email_name %> Still I am not sure how to solve this for send_mail.html.erb, but probably a render function is missing here or not correct. --~--~---------~--~----~------------~-------~--~----~ 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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
On 25 Oct 2008, at 19:58, X wrote:> > Ok, solved the first subpart. > > In contact_email.html.erb I do not have access to all variables of the > mode but only to > the contents of the hash @body. So this is working: >Yup you got it.> Body: <%= @email_body %> > Name: <%= @email_name %> > > Still I am not sure how to solve this for send_mail.html.erb, but > probably a render function is missing here or not correct.What was the problem here? --~--~---------~--~----~------------~-------~--~----~ 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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
> Yup you got it.Thanx for your quick reply ! Great service :-)> > Still I am not sure how to solve this for send_mail.html.erb, but > > probably a render function is missing here or not correct. > > What was the problem here?The same problem (but it seems to have a different answer). In contact_email.html.erb I did not get access to variable @recipients but only to variable @email_body, looks like this is rendered off the hash table @body. But in send_mail.html.erb neither the one nor the other works. I would, however, want to present the user with a copy of the mail he sent via the form in the browser, so I need to know how the send_mail.html.erb template can access the email body. --~--~---------~--~----~------------~-------~--~----~ 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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
On 25 Oct 2008, at 20:19, X wrote:> >> Yup you got it. > > Thanx for your quick reply ! Great service :-) > >>> Still I am not sure how to solve this for send_mail.html.erb, but >>> probably a render function is missing here or not correct. >> >> What was the problem here? > > The same problem (but it seems to have a different answer). > > In contact_email.html.erb I did not get access to variable @recipients > but only to variable @email_body, looks like this is rendered off the > hash table @body. But in send_mail.html.erb neither the one nor the > other works. I would, however, want to present the user with a copy of > the mail he sent via the form in the browser, so I need to know how > the send_mail.html.erb template can access the email body. >the send_mail template knows absolutely nothing of what happened in the mailer. By the time send_mail.html.erb is rendered the actionmailer object with those instance variables probably doesn''t even exist anymore. Given that those values were just things pulled out of the params hash the send_mail view/its associated controller action can just do the same thing. Fred> > >--~--~---------~--~----~------------~-------~--~----~ 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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Of course! :-) Thanx for the real quick support !! --~--~---------~--~----~------------~-------~--~----~ 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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Reasonably Related Threads
- Email Form for Contact Page
- ActionView::TemplateError (can't convert ActiveRecord::Error into String)
- Blank fields getting validated
- has anybody made actionmailer work with rails 2.3.5?
- Problem with implicit multipart emails using ActionMailer in Rails 2.3.3