23

正如标题所暗示的,当我尝试link_to在我的邮件模板中使用时,我收到了这个错误:

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.default_url_options = { host: 'example.com' }到以下每个文件中,但没有一个起作用:

/config/environment.rb
/config/application.rb (inside the module for my app)
/config/development.rb (I'm in development mode)

Rails 4 中是否发生了一些变化,使其工作方式有所不同?

4

2 回答 2

38

前几天我遇到了这个问题,这最终对我有用:

Rails.application.routes.default_url_options[:host] = '???'

编辑

这在每个环境文件中都有 - development.rbtest.rb并且production.rb(如果你有它们,还有更多)在每个环境文件中都有相应的主机名

于 2013-09-11T13:38:14.717 回答
12

您必须在每个环境(开发、测试、生产)中设置 default_url。

您需要进行这些更改。

    config/environments/development.rb
     config.action_mailer.default_url_options = 
      { :host => 'your-host-name' }  #if it is local then 'localhost:3000'

 config/environments/test.rb
      config.action_mailer.default_url_options = 
      { :host => 'your-host-name' }  #if it is local then 'localhost:3000'

  config/environments/production.rb
     config.action_mailer.default_url_options = 
      { :host => 'your-host-name' }  #if it is local then 'localhost:3000'
于 2015-02-04T12:08:00.613 回答