繁体   English   中英

如何从主应用程序访问Rails引擎方法?

[英]How to access Rails Engines methods from main application?

我正在尝试使用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引擎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注释掉代码行,那么一切都在生产中。

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

提前致谢!

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM