本文介绍了ActionView :: Template :: Error:缺少要链接的主机!请提供:host参数,设置default_url_options [:host],或将:only_path设置为true的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的ruby on rails动作邮件程序在开发环境中运行良好,但在生产环境中却不断抛出:
My ruby on rails action mailer runs all good in development environment, but in production environment, it keeps throw:
ActionView::Template::Error: Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true
我开发配置是
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
:port => xxx,
:address => 'smtp.example.org',
:user_name => '[email protected]',
:password => 'xxxxxxxx',
:domain => 'xxxxxx.com',
:authentication => :plain,
}
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
我的生产配置为
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
:port => 587,
:address => 'smtp.example.org',
:user_name => '[email protected]',
:password => 'xxxxxx',
:domain => 'example.com',
:authentication => :plain,
}
config.action_mailer.default_url_options = { :host => 'example.com' }
我的其他环境是:
ruby 2.1.1
rails 4.0.3
sidekiq
devise
devise-async
我尝试过:
-
在初始化文件中添加以下内容
Add the following in a initializer file
ActionMailer::Base.default_url_options[:host] = "example.com"
此答案
它们都不起作用。
推荐答案
最后,我在每个环境文件中添加了以下内容和正确的值:
In the end I added the following with the correct value to each environment file:
test.rb / development.rb / production.rb
Devise 3.2.x-4。 xx
Rails 4.1.x && Rails 4.2.x && Rails 5.xx
Rails 4.1.x && Rails 4.2.x && Rails 5.x.x
感谢
# Default Mailer Host
Rails.application.routes.default_url_options[:host] = 'domain.com'
这篇关于ActionView :: Template :: Error:缺少要链接的主机!请提供:host参数,设置default_url_options [:host],或将:only_path设置为true的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!