2012-06-21 120 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

感謝您的回答。我確實結束了在幫助程序中複製代碼。 –

相關問題