2012-06-21 2 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 :: Template :: Ошибка (не определен метод ` current_order 'для Spree :: Core :: CurrentOrder: Module):

Если я прокомментирую строки кода с помощью current_order, все будет работать.

Я думаю, что это то, как вещи загружаются в производство? Но это первый раз, когда я пытаюсь развернуть, поэтому я не совсем понимаю различия между разработкой и производством.

Заранее благодарен!

ответ

1

Этот вопрос немного устарел, но вот возможный ответ для записи.

Возможно, вы можете обойти, используя кусочек кода spree в вашем контроллере. Как правило, лучше иметь код в контроллере (или, в случае Spree, в controller_decorator), чем в представлении.

Например, если вам это в ваших продуктах рассматривают как @current_order:

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

Но я не знаю, почему он работает в разработке и в производстве.

+0

Спасибо за ответ. Я закончил дублирование кода внутри помощника. –

Смежные вопросы