diff options
author | simply-phi <abdul.ibrahim18@yahoo.com> | 2011-04-03 04:17:26 -0700 |
---|---|---|
committer | dmathieu <42@dmathieu.com> | 2011-04-04 11:03:59 +0200 |
commit | f323a8fed43696c082c326d795f28dee5a68a480 (patch) | |
tree | 3b57a1c781c7cebffb104fbf7094394d0a92672a /actionmailer | |
parent | 3e24e9ebc22f96f9124d3a5d1c83b93c1bea937d (diff) | |
download | rails-f323a8fed43696c082c326d795f28dee5a68a480.tar.gz rails-f323a8fed43696c082c326d795f28dee5a68a480.tar.bz2 rails-f323a8fed43696c082c326d795f28dee5a68a480.zip |
Added information about default values
Diffstat (limited to 'actionmailer')
-rw-r--r-- | actionmailer/README.rdoc | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/actionmailer/README.rdoc b/actionmailer/README.rdoc index 14d20bb08d..3789a75021 100644 --- a/actionmailer/README.rdoc +++ b/actionmailer/README.rdoc @@ -72,6 +72,87 @@ Or you can just chain the methods together like: Notifier.welcome.deliver # Creates the email and sends it immediately +== Setting defaults + +Sometimes you have an Action Mailer class with more than one method for sending e-mails. Think of an authentication system in which you would like to send users a welcome message after sign up, a forgot your password message and a message to send when the user closes his account. Your class would look something like this. + +Example: + + class Authenticationmailer < ActionMailer::Base + def signed_up(user) + # prepare the view + .... + + # and send the e-mail + mail(:to => user.email, + :subject => "Welcome to our awesome application!", + :from => "awesome@application.com") + end + + def forgot_password(user) + # prepare the view + .... + + mail(:to => user.email, + :subject => "Forgot your password? No worry, we're awesome at that too!", + :from => "awesome@application.com") + end + + def closed_account(user) + # prepare the view + .... + + mail(:to => user.email, + :subject => "Closing your account, are you? That's not awesome, dude!", + :from => "awesome@application.com") + end + end + +Now this works fine, but it would be nice if we could remove the <tt>:from</tt> from the method, seeing that it is a static value that is the same across all the methods, and just assign it once. Introducing the <tt>default</tt> method. With this method you can assign default values that will be used by all of the mail methods. Now you can refactor the above example to just assign the <tt>:from</tt> value only once. + +Example: + + class Authenticationmailer < ActionMailer::Base + default :from => "awesome@application.com" + + def signed_up(user) + # prepare the view + .... + + # and send the e-mail + mail(:to => user.email, + :subject => "Welcome to our awesome application!") + end + + def forgot_password(user) + # prepare the view + .... + + mail(:to => user.email, + :subject => "Forgot your password? No worry, we're awesome at that too!") + end + + def closed_account(user) + # prepare the view + .... + + mail(:to => user.email, + :subject => "Closing your account, are you? That's not awesome, dude!") + end + end + +The default method takes a Hash, so it is possible to assign more values in one method. + +Example: + + class Authenticationmailer < ActionMailer::Base + default :from => "awesome@application.com", :subject => "Default subject" + + ..... + end + +The default value is overwritten if you use them in the mail method. + == Receiving emails To receive emails, you need to implement a public instance method called <tt>receive</tt> that takes an |