设置default_url_options
为使用您的action_mailer.default_url_options
。
在每个环境文件(例如development.rb
,production.rb
等)中,您可以指定default_url_options
用于的action_mailer
:
config.action_mailer.default_url_options = { host: 'lvh.me', port: '3000' }
但是,这些设置不适用于MyApp:Application.default_url_options
:
$ MyApp::Application.config.action_mailer.default_url_options
#=> {:host=>"lvh.me", :port=>"3000"}
$ MyApp::Application.default_url_options
#=> {}
这就是为什么您在之外的任何其他地方都遇到该错误的原因ActionMailer
。
您可以设置应用程序的default_url_options
使用您定义的内容action_mailer
在适当的环境文件(development.rb
,production.rb
,等)。
为了使内容尽可能保持DRY,请在config/environment.rb
文件中执行此操作,因此您只需执行一次:
# Initialize the rails application
MyApp::Application.initialize!
# Set the default host and port to be the same as Action Mailer.
MyApp::Application.default_url_options = MyApp::Application.config.action_mailer.default_url_options
现在,当您启动应用程序时,您的整个应用程序default_url_options
将与您的action_mailer.default_url_options
:
$ MyApp::Application.config.action_mailer.default_url_options
#=> {:host=>"lvh.me", :port=>"3000"}
$ MyApp::Application.default_url_options
#=> {:host=>"lvh.me", :port=>"3000"}
向@pduersteler致谢,以带我走这条路。