Rails和Devise缺少与主机的链接

时间:2017-04-03 20:34:16

标签: devise ruby-on-rails-5 spree-auth-devise

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

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

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

config.default_url_options = { host: 'localhost:3000' }
Rails.application.routes.default_url_options[:host] = 'localhost:3000'
当我Rails.application.routes.default_url_options时,在我的rails控制台中

我得到了{:host => Rails.application.config.domain}。当我Rails.applicaiton.default_url_options

时,同样的事情发生了

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

1 个答案:

答案 0 :(得分:0)

TL; DR 在我的情况下,Spree :: Store.current消失了 - 我不得不重新创建它。

我尝试将default_url_options设置为路由和环境。但没有运气。

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

@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