在我的任何应用程序的邮件程序中使用命名路由会引发此错误:
ArgumentError: Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true
这种情况并非一直发生,我无法在开发或生产模式下进行本地复制。
如果我在生产中打开控制台,我可以确认已配置默认主机:
ActionMailer::Base.default_url_options
=> {:host=>"thehost.com"}
Rails.application.config.action_mailer.default_url_options
=> {:host=>"thehost.com"}
Spree::Core::Engine.config.action_mailer.default_url_options
=> {:host=>"thehost.com"}
所有命名路由都是通过Spree的路由代理调用的:
<%= spree.my_route_url %>
我在config / environments / production.rb
中有以下内容config.action_mailer.default_url_options = { :host => "thehost.com" }
这可能是多余的,因为Spree还从:site_url首选项(我已正确配置)设置它
ActionMailer::Base.default_url_options[:host] = Spree::Config[:site_url]
(来自mail_settings.rb)
施普雷版本1-0稳定 Rails 3.1.3 Ruby 1.9.3