3

我正在尝试使用 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'

我还尝试了这些其他解决方案的排列:

如何在主应用程序中合并 Rails Engine ApplicationController 方法?

一种将 before_filter 从引擎添加到应用程序的方法

Rails 3.1:在客户端应用程序中公开引擎助手的更好方法

但我已经忘记了我实际上做了什么。

有人可以指出我正确的方向吗?也许我错误地实施了上述链接中的解决方案?

这是我在生产中遇到的错误:

2012-06-21T09:59:08+00:00 app[web.1]: ActionView::Template::Error(Spree::Core::CurrentOrder:Module 的未定义方法“current_order”):

如果我用 current_order 注释掉代码行,一切都在生产中正常工作。

我在想这是在生产中加载东西的方式吗?但这是我第一次尝试部署,所以我不太了解开发和生产之间的区别。

提前致谢!

4

1 回答 1

1

这个问题有点老了,但为了记录,这里有一个可能的答案。

也许您可以通过在控制器中使用一段狂欢代码来解决问题。将代码放在控制器中(或者,在 Spree 的情况下,放在controller_decorator中)通常比在视图中更好。

例如,如果您在产品视图中需要此 @current_order:

Spree::ProductsController.class_eval do
  @current_order = Spree::Order.find(session[:order_id])
end

但我不知道为什么它在开发中而不是在生产中工作。

于 2013-04-29T18:12:23.023 回答