スプリー コマース 2.1.1 アプリ (Rails 4.0.0) を持っています。製品詳細ページに「関連製品」を表示したいと考えています。関連商品は、表示されている商品と同じブランド/性別の商品をランダムに選択したものです。それは働いています...私products_controller_decorator.rb
は酒宴の を拡張する を作りましたproducts_controller.rb
。
Spree'sproducts_controller.rb
には、以下を設定する before_filter があります@product
。
before_filter :load_product, :only => :show
私自身のデコレータには、設定するメソッドがあります@related_products
before_filter :get_related_products, :only => :show
問題は:
a) たまたま、load_product
before フィルターが before フィルターの前に呼び出されるため、偶然にも、それが設定する変数にget_related_products
アクセスできます。@product
しかし、私が見る限り、それが起こるという保証はありません。フィルターが後で呼び出されるようにしたい...
と
b) Spree のshow
メソッドも を設定@taxon
します。これを自分の get_related_products
メソッドで使用できるようにしたいと思っています。
before_render
だから、私が欲しいのは、コントローラーメソッドが実行された後、ビューがレンダリングされる前に呼び出されるCakePHP の のようなフックです。Railsに相当するものが見つからないようです。そのようなことはありますか?after_filter
ビューがレンダリングされた後に呼び出されるため、私のためにはしません。
そうでない場合は、インスタンス変数を取得できるように、Spree の製品コントローラーのメソッドが実行されget_related_products
た後に呼び出しを追加する最良の方法は何ですか?show