Rails和Devise缺少链接到主机

问题描述:

我很困惑如何提供default_url_options。我得到这个错误Rails和Devise缺少链接到主机

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

我正在使用spisecommerce使用devise进行身份验证。在我的开发环境中重置密码时发生此错误。我还没有在生产环境中对它进行测试。 我在我的环境/开发我的Rails控制台当我做Rails.application.routes.default_url_options我得到{:host => Rails.application.config.domain}使用此

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

。当我做同样的事情Rails.applicaiton.default_url_options

没有我找到的解决方案工作。

+0

我坚持着同样的问题。几天前添加default_url_options解决了我的问题,但不是现在。 – Jakub

+0

它适用于我在另一台计算机上。我不知道为什么它坏了。 –

+0

以下是我可以看到的: 我的选项变量(主机为零) '{:controller =>“spree/user_confirmations”,:action =>“create”,:host => nil,:port => 3000 ,::confirmation_token => 2904397,:path =>“/ user/spree_user/confirmation”,:script_name =>“/”,::params => {:confirmation_token => 2904397},:user => nil,:password =>零}' 和 '>> Rails.application.config.action_mailer.default_url_options' '=> {:主机=> “本地主机”,:端口=> 3000}' 但'Rails.application。 action_mailer.default_url_options'为空 – Jakub

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) 

所以主机,它使用施普雷::商店。然后,我走进控制台,并得到了我的盛宴:: 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