我正在将 Spree 固定到现有的应用程序上。在我的应用程序页面中,为了显示我当前使用分类单元 ID 访问 Spree::Product 的产品子集。与订单相同:从应用程序代码中,我执行“Spree::Order.find(session[:order_id])”(这样我就可以在 Spree 页面之外显示购物车中的商品数量)
这似乎很繁琐……我应该改为自定义 Spree(重写一些页面),还是将其作为单独的实例旋转并进行 API 调用等?
谢谢!
我正在将 Spree 固定到现有的应用程序上。在我的应用程序页面中,为了显示我当前使用分类单元 ID 访问 Spree::Product 的产品子集。与订单相同:从应用程序代码中,我执行“Spree::Order.find(session[:order_id])”(这样我就可以在 Spree 页面之外显示购物车中的商品数量)
这似乎很繁琐……我应该改为自定义 Spree(重写一些页面),还是将其作为单独的实例旋转并进行 API 调用等?
谢谢!
Spree 有一个名为的模块Spree::ControllerHelpers::CurrentOrder
,您可以将其包含在ApplicationController
. 这将使该current_order
方法在您的应用程序的所有视图中都可用。
您的问题不是很清楚(我不确切知道您要达到的目标),而且我不太了解 Spree,但这里有一些答案要素。
要覆盖视图(通常适用于大多数命名空间插件和引擎),只需将具有相同名称和路径的文件拖放到主应用程序树中,例如,如果要覆盖products/show.html.erb
,只需将其拖放到app/views/spree/products/show.html.erb
. 请注意,您的视图将从相应的 spree 控制器呈现,因此您可能无法访问常用的助手
覆盖控制器做同样的事情。如果您只需要一点自定义,您也可以使用继承......
要在您的其中一个中渲染狂欢视图,只需使用render :file =>
并指出宝石内的正确路径。
就是这样,您唯一需要做的另一件事就是深入了解一下 spree gem,以便了解您要覆盖哪些文件/要从哪些类继承。阅读一点关于引擎的知识也不会受到伤害。