我正在尝试使用Spree :: Core引擎中定义的current_order方法: https://github.com/spree/spree/blob/master/core/lib/spree/core/current_order.rb
在我看来,我已经尝试了
Spree::Core::CurrentOrder.current_order
在开发中仅使用“current_order”工作正常,但不在生产中。
然后我试图在我的视图文件中要求它:
require 'spree/core/current_order'
我也尝试过这些其他解决方案的排列:
How to incorporate Rails Engine ApplicationController methods in a main app?
A way to add before_filter from engine to application
Rails 3.1: Better way to expose an engine's helper within the client app
但是我已经忘记了我实际做了什么。
有人可以指出我正确的方向吗?也许我错误地在上面的链接中实现了解决方案?
这是我在制作中遇到的错误:
2012-06-21T09:59:08 + 00:00 app [web.1]:ActionView :: Template :: Error(Spree :: Core :: CurrentOrder:Module的未定义方法`current_order'):
如果我用current_order注释掉代码行,那么一切都在生产中。
我认为这是生产中装载的方式吗?但这是我第一次尝试部署,所以我不太了解开发和生产之间的差异。
提前致谢!
答案 0 :(得分:1)
这个问题有点陈旧,但这是一个可能的答案,记录。
也许您可以通过在控制器中使用一段狂欢代码来解决问题。在控制器中(或者,在Spree的情况下,在controller_decorator中)将代码放在视图中通常是更好的主意。
例如,如果您需要在产品视图中将其作为@current_order:
Spree::ProductsController.class_eval do
@current_order = Spree::Order.find(session[:order_id])
end
但我不知道为什么它在开发中而不是在生产中。