2017-04-03 66 views
1

我很困惑如何提供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

回答

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) 

所以主機,它使用施普雷::商店。然後,我走進控制檯,並得到了我的盛宴:: 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 
相關問題