1

我对如何提供 default_url_options 感到非常困惑。我收到此错误

Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true

我正在使用使用 devise 进行身份验证的 spreecommerce。在我的开发环境中重置密码期间发生此错误。我还没有在生产环境中测试过它。我在我的环境/开发中使用它

config.default_url_options = { host: 'localhost:3000' }
Rails.application.routes.default_url_options[:host] = 'localhost:3000'

在我的 Rails 控制台中,当Rails.application.routes.default_url_options我得到{:host => Rails.application.config.domain}. 当我这样做时,同样的事情发生了Rails.applicaiton.default_url_options

我发现的解决方案都没有奏效。

4

1 回答 1

0

TL;DR在我的例子中,Spree::Store.current 消失了——我不得不重新创建它。


我尝试设置default_url_options路线并进入环境。但没有运气。

所以我进入了spree_auth_devise-3.1.0gem源代码:

@confirmation_url = spree.spree_user_confirmation_url(:confirmation_token => token, :host => Spree::Store.current.url)

所以对于主机来说,它使用 Spree::Store。然后我进入控制台,发现我的 Spree::Store.current 是空的:

(byebug) Spree::Store.current.url
nil

所以简单地用虚拟数据创建一个商店就解决了我的问题。

store = Spree::Store.new
store.name = 'test'
store.url = 'http://localhost:3000'
store.code = 'spree'
store.default = true
store.save
于 2017-04-05T17:19:41.710 回答