2017-03-15 11 views
0

Spree Commerceを使用していますが、今はバックエンドに追加したすべての製品がホームページに表示されます。自分が選んだ製品だけをフロントページに表示して、デフォルトで表示されているようにすべてを表示する方法はありますか?Spreeで選択した商品のみを表示するには?

私はdefaceが私にすべての外観をカスタマイズできると知っていますが、それは私が探している答えではありません。

ありがとうございました

答えて

0

Defaceは、コントローラではなくビューの変更に使用されます。 DBからのフェッチ・プロダクトはコントローラ・ロジックです。多くのオプションがあります

、あなたは製品モデルに、独自のスコープを追加し、それらを使用するコントローラをオーバーライドしますが、最速は管理者でないユーザーまくるが、製品に通常activeスコープを使用していますので、ためdiscontinue_onを使用していることができます。

0

答えを見つけました:@products = @ searcher.retrieve_productsを@products = Product.joins(:variants_including_master).where(:name => "Ruby on Rails Tote")に変更しました。 home_controller_decorator.rb

+0

このソリューションはお勧めできません。指定した名前の製品のみを表示するようにコントローラをハードコーディングしています( "Ruby on Rails Tote")。よりクリーンなソリューションを使用したい場合は、コントローラーのデフォルト検索でモデルのカスタムスコープを使用します。 Spreeはデフォルトではransackを使ってクエリーを作成しています。 – Argonus

0

@elliot実際はかなり簡単です。管理者側の製品の編集ページに移動し、日付が現在の日付以下の製品の場合はdiscontinue_onと設定します。 available_onが現在の日付よりも小さく、discontinue_onが現在の日付より大きいフロントエンドでは、その製品のみが表示されます。

関連する問題