1

在我的任何应用程序的邮件中使用命名路由都会引发此错误:

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)

Spree 是版本 1-0-stable Rails 3.1.3 Ruby 1.9.3

4

0 回答 0