mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
* Remove default_url_options from mailer generator
* Improve mailer documentation regarding generating URLs * Add no_match to mailer generator to warn contributors about default_url_options Signed-off-by: Joshua Peek <josh@joshpeek.com>
This commit is contained in:
parent
4ac33de4d6
commit
4809dcc1b5
3 changed files with 30 additions and 17 deletions
|
@ -73,21 +73,36 @@ module ActionMailer #:nodoc:
|
||||||
# <%= truncate(note.body, 25) %>
|
# <%= truncate(note.body, 25) %>
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
# = Generating URLs for mailer views
|
# = Generating URLs
|
||||||
#
|
#
|
||||||
# If your view includes URLs from the application, you need to use url_for in the mailing method instead of the view.
|
# URLs can be generated in mailer views using <tt>url_for</tt> or named routes.
|
||||||
# Unlike controllers from Action Pack, the mailer instance doesn't have any context about the incoming request. That's
|
# Unlike controllers from Action Pack, the mailer instance doesn't have any context about the incoming request,
|
||||||
# why you need to jump this little hoop and supply all the details needed for the URL. Example:
|
# so you'll need to provide all of the details needed to generate a URL.
|
||||||
#
|
#
|
||||||
# def signup_notification(recipient)
|
# When using <tt>url_for</tt> you'll need to provide the <tt>:host</tt>, <tt>:controller</tt>, and <tt>:action</tt>:
|
||||||
# recipients recipient.email_address_with_name
|
|
||||||
# from "system@example.com"
|
|
||||||
# subject "New account information"
|
|
||||||
# body :account => recipient,
|
|
||||||
# :home_page => url_for(:host => "example.com", :controller => "welcome", :action => "greeting")
|
|
||||||
# end
|
|
||||||
#
|
#
|
||||||
# You can now access @home_page in the template and get http://example.com/welcome/greeting.
|
# <%= url_for(:host => "example.com", :controller => "welcome", :action => "greeting") %>
|
||||||
|
#
|
||||||
|
# When using named routes you only need to supply the <tt>:host</tt>:
|
||||||
|
#
|
||||||
|
# <%= users_url(:host => "example.com") %>
|
||||||
|
#
|
||||||
|
# You will want to avoid using the <tt>name_of_route_path</tt> form of named routes because it doesn't make sense to
|
||||||
|
# generate relative URLs in email messages.
|
||||||
|
#
|
||||||
|
# It is also possible to set a default host that will be used in all mailers by setting the <tt>:host</tt> option in
|
||||||
|
# the <tt>ActionMailer::Base.default_url_options</tt> hash as follows:
|
||||||
|
#
|
||||||
|
# ActionMailer::Base.default_url_options[:host] = "example.com"
|
||||||
|
#
|
||||||
|
# This can also be set as a configuration option in <tt>environment.rb</tt>:
|
||||||
|
#
|
||||||
|
# config.action_mailer.default_url_options = { :host => "example.com" }
|
||||||
|
#
|
||||||
|
# If you do decide to set a default <tt>:host</tt> for your mailers you will want to use the
|
||||||
|
# <tt>:only_path => false</tt> option when using <tt>url_for</tt>. This will ensure that absolute URLs are generated because
|
||||||
|
# the <tt>url_for</tt> view helper will, by default, generate relative URLs when a <tt>:host</tt> option isn't
|
||||||
|
# explicitly provided.
|
||||||
#
|
#
|
||||||
# = Sending mail
|
# = Sending mail
|
||||||
#
|
#
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
class <%= class_name %> < ActionMailer::Base
|
class <%= class_name %> < ActionMailer::Base
|
||||||
|
|
||||||
# change to your domain name
|
|
||||||
default_url_options[:host] = 'example.com'
|
|
||||||
<% for action in actions -%>
|
<% for action in actions -%>
|
||||||
|
|
||||||
def <%= action %>(sent_at = Time.now)
|
def <%= action %>(sent_at = Time.now)
|
||||||
|
|
|
@ -18,8 +18,8 @@ class RailsMailerGeneratorTest < GeneratorTestCase
|
||||||
body.split("\n").map{|line| line.sub(' '*4, '') }
|
body.split("\n").map{|line| line.sub(' '*4, '') }
|
||||||
end
|
end
|
||||||
|
|
||||||
assert_match /^ default_url_options\[:host\] = 'example.com'$/m, model,
|
assert_no_match /(self.default_url_options =|default_url_options\[.*\] =)/, model,
|
||||||
'model should include default_url_options :host declaration'
|
'individual mailer models should not set default_url_options because the options are shared by all mailers'
|
||||||
end
|
end
|
||||||
|
|
||||||
assert_generated_views_for :notifier, 'reset_password.erb'
|
assert_generated_views_for :notifier, 'reset_password.erb'
|
||||||
|
|
Loading…
Reference in a new issue