在使用Spree(一个Rails电子商务引擎)时,我试图在我的Spree :: Product模型中保存products_path以进行跟踪。
Looking on SO I found this solution, which looked like the perfect answer.
Rails.application.routes.url_helpers.products_path
Rails.application.routes.url_helpers.products_url(:host => "example.com")
但是使用该解决方案只是给了我以下错误。
NoMethodError: undefined method `products_path' for #<Module:0x007fe9e208e908>
非常沮丧......
答案 0 :(得分:2)
使用Rails引擎时,您需要使用Engine的路由助手而不是主Rails应用程序路由助手。
Spree::Core::Engine.routes.url_helpers.products_path
Spree::Core::Engine.routes.url_helpers.products_url(:host => "example.com")
奖金提示:
如果要删除:host => "example.com"
参数,可以在环境配置文件中添加主机指示符。
就像url_helpers一样,对于引擎,您需要在引擎路由下添加默认值。
# in config -> environments -> development.rb
Spree::Core::Engine.routes.default_url_options[:host] = 'localhost:3000'
注意:此不为Rails.application.routes.url_helpers设置默认主机; - )