如何从主应用程序访问的Rails引擎的方法呢?(How to access Rails Engine

2019-06-25 15:59发布

我想用在施普雷定义的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的引擎ApplicationController的方法呢?

从引擎添加的before_filter应用的一种方式

Rails的3.1:更好的方式向客户端应用程序中暴露的发动机的帮手

不过,我已经记不清我实际做。

可有人请点我在正确的方向? 也许我在执行上面的链接不正确的解决方案?

这是我得到的生产误差:

2012-06-21T09:59:08 + 00:00应用程式[web.1]:::的ActionView模板::错误(未定义的方法`current_order”的狂欢::核心:: CurrentOrder:模块):

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

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

提前致谢!

Answer 1:

这个问题是有点老了,但这里是一个可能的答案,备案。

也许你可以在你的控制器使用了一块大礼包代码的解决。 它通常是一个更好的主意,有在控制器中的代码(或者,在狂欢的情况下,在controller_decorator ),比在视图中。

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

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

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



文章来源: How to access Rails Engines methods from main application?