2012-06-21 76 views
3

我试图使用在施普雷定义的current_order方法::核心引擎: https://github.com/spree/spree/blob/master/core/lib/spree/core/current_order.rb如何从主应用程序访问Rails引擎方法?

在我看来,我已经试过

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的应用[web.1]:::的ActionView ::模板错误(未定义的方法` current_order”的盛宴::核心:: CurrentOrder:模块):

如果我注释掉的代码行与current_order,一切正常生产。

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

在此先感谢!

回答

1

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

也许你可以在你的控制器使用了一块大礼包代码的解决。将代码放在控制器中(或者在Spree的情况下,在controller_decorator中)比在视图中更好。

例如,如果你需要这对您的产品视图@current_order:

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

但我不知道为什么它的工作在发展,而不是生产。

+0

感谢您的回答。我确实结束了在帮助程序中复制代码。 –

相关问题