缺少要链接的主机!请为 Rails 4 提供 :host 参数

Posted

技术标签:

【中文标题】缺少要链接的主机!请为 Rails 4 提供 :host 参数【英文标题】:Missing host to link to! Please provide the :host parameter, for Rails 4 【发布时间】:2016-07-08 00:21:21 【问题描述】:

缺少要链接的主机!请提供 :host 参数,设置 default_url_options[:host],或者设置 :only_path 为 true

我偶尔会出现这个错误,一般重启服务器会解决一段时间,然后又会出现。 我已经添加了 config.action_mailer.default_url_options = "localhost:3000",在 development 和 test.rb 文件中。

另外,我用过include Rails.application.routes.url_helpers 在一个访问路线的模块中,我读到这可能是我收到这些错误的原因,但删除它会使我无法访问路线。 该模块适用于数据表 gem。

【问题讨论】:

你最后做了什么@raunak Joneja? Missing host to link to! Please provide :host parameter or set default_url_options[:host]的可能重复 【参考方案1】:

对于 Rails 5,使用:

Rails.application.routes.default_url_options[:host] = "XXX"

您可以将其放入 config/environments/ 文件(或任何其他初始化程序)中,或者例如在config/routes.rb的开头。

【讨论】:

你会在哪里添加它?在config/environments/<env>.rb? 您可以在任何您认为合适的地方使用它。它可以是环境文件。通常,我最终得到相同的语句(从环境变量中读取主机值),因此,我将这一行放在 routes.rb 的顶部,因为它是定义/设置 Rails.application.routes 的文件。【参考方案2】:

你应该这样写

用于开发(development.rb)

config.action_mailer.default_url_options =  :host => "localhost:3000" 

生产中 (production.rb)

 config.action_mailer.default_url_options =  :host => "myproductionsite.com" 

【讨论】:

没用,将 action_mailer 更改为控制器,将值设为哈希,检查我的 heroku 控制台,同样的错误:'ActionView::Template::Error (缺少要链接的主机!请提供:host 参数,设置 default_url_options[:host],或者设置 :only_path 为 true):' prod host: :host => "myherokuapp.herokuapp.com" 为什么要更改 action_controller ?【参考方案3】:

我遇到了类似的错误。问题出在您的配置中。

尝试为你的 development.rb 和 test.rb 重写配置,如下所示:

config.action_mailer.default_url_options =  host: "localhost", port: 3000 

还要检查您在 production.rb 中的配置是否正确编写,如下所示:

config.action_mailer.default_url_options =  host: 'myherokuapp.herokuapp.com' 

【讨论】:

【参考方案4】:

您已更新操作邮件程序的默认 url 选项。 URL 助手将采用 action_controller 设置中的选项。

config.action_controller.default_url_options = .....

BR

【讨论】:

另外,url options 是一个哈希,而不是一个字符串。 没用,将 action_mailer 更改为控制器,将值设为哈希,检查我的 heroku 控制台,同样的错误:'ActionView::Template::Error (缺少要链接的主机!请提供:host 参数,设置 default_url_options[:host],或设置 :only_path 为 true):' prod host: :host => "myherokuapp.herokuapp.com"

以上是关于缺少要链接的主机!请为 Rails 4 提供 :host 参数的主要内容,如果未能解决你的问题,请参考以下文章

缺少要链接的主机!请提供 :host 参数,设置 default_url_options[:host]

如何解决?出问题了…请为我的for循环提供帮助[关闭]

将 Rails 应用程序推送到 Heroku 时缺少“sqlite3.h”

如何解决错误“‘生产’环境缺少‘secret_key_base’”(Rails 4.1)

Rails 4动作邮件程序SMTP-AUTH错误缺少秘密短语?

在 3000 端口主机提供的 IP 上绑定 rails app