Đặt default_url_options
để sử dụng của bạn action_mailer.default_url_options
.
Trong mỗi file môi trường của bạn (ví dụ development.rb
, production.rb
vv), bạn có thể chỉ định default_url_options
để sử dụng cho action_mailer
:
config.action_mailer.default_url_options = { host: 'lvh.me', port: '3000' }
Tuy nhiên, những điều này không được đặt cho MyApp:Application.default_url_options
:
$ MyApp::Application.config.action_mailer.default_url_options
#=> {:host=>"lvh.me", :port=>"3000"}
$ MyApp::Application.default_url_options
#=> {}
Đó là lý do tại sao bạn nhận được lỗi đó ở bất cứ thứ gì bên ngoài ActionMailer
.
Bạn có thể cài ứng dụng của bạn là default_url_options
sử dụng những gì bạn định nghĩa cho action_mailer
trong file môi trường thích hợp ( development.rb
, production.rb
, vv).
Để giữ mọi thứ càng tốt càng tốt, hãy làm điều này trong config/environment.rb
tệp của bạn để bạn chỉ phải làm điều này một lần:
# 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
Bây giờ khi bạn khởi động ứng dụng của mình, toàn bộ Ứng dụng của default_url_options
bạn sẽ khớp với 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"}
Hat tip cho @pduersteler để dẫn tôi xuống con đường này.