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
没有我找到的解决方案工作。
答
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
我坚持着同样的问题。几天前添加default_url_options解决了我的问题,但不是现在。 – Jakub
它适用于我在另一台计算机上。我不知道为什么它坏了。 –
以下是我可以看到的: 我的选项变量(主机为零) '{: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