我有一个疯狂商务 2.1.1 应用程序(Rails 4.0.0),我想在产品详细信息页面上显示一些“相关产品”。相关产品将只是随机选择的与正在查看的产品具有相同品牌/性别的产品。它正在工作......我已经制作了products_controller_decorator.rb
,它扩展了 spree 的products_controller.rb
。
Spreeproducts_controller.rb
有一个 before_filter 设置@product
:
before_filter :load_product, :only => :show
我自己的装饰器有一个设置方法@related_products
before_filter :get_related_products, :only => :show
问题是:
a)碰巧,load_product
前过滤器在我的前过滤器之前被调用get_related_products
,所以巧合的是,我可以访问@product
它设置的变量。但据我所知,不能保证会发生这种情况。我想确保稍后调用我的过滤器...
和
b) Spree 的show
方法也设置@taxon
了,我真的很希望能够在我自己的 get_related_products
方法中使用它。
所以,我想要的是一个像 CakePHP's 这样的钩子before_render
,它在控制器方法运行之后被调用,但在视图被渲染之前被调用。我似乎无法找到等效的导轨。有这样的事吗?after_filter
不会为我做,因为它是在视图渲染后调用的。
如果不是,那么在Spree 的产品控制器get_related_products
的show
方法运行之后,以一种我可以获取它的实例变量的方式来附加调用的最佳方法是什么?