Spree Commerceを使用していますが、今はバックエンドに追加したすべての製品がホームページに表示されます。自分が選んだ製品だけをフロントページに表示して、デフォルトで表示されているようにすべてを表示する方法はありますか?Spreeで選択した商品のみを表示するには?
私はdefaceが私にすべての外観をカスタマイズできると知っていますが、それは私が探している答えではありません。
ありがとうございました
Spree Commerceを使用していますが、今はバックエンドに追加したすべての製品がホームページに表示されます。自分が選んだ製品だけをフロントページに表示して、デフォルトで表示されているようにすべてを表示する方法はありますか?Spreeで選択した商品のみを表示するには?
私はdefaceが私にすべての外観をカスタマイズできると知っていますが、それは私が探している答えではありません。
ありがとうございました
Defaceは、コントローラではなくビューの変更に使用されます。 DBからのフェッチ・プロダクトはコントローラ・ロジックです。多くのオプションがあります
、あなたは製品モデルに、独自のスコープを追加し、それらを使用するコントローラをオーバーライドしますが、最速は管理者でないユーザーまくるが、製品に通常active
スコープを使用していますので、ためdiscontinue_on
を使用していることができます。
答えを見つけました:@products = @ searcher.retrieve_productsを@products = Product.joins(:variants_including_master).where(:name => "Ruby on Rails Tote")に変更しました。 home_controller_decorator.rb
@elliot実際はかなり簡単です。管理者側の製品の編集ページに移動し、日付が現在の日付以下の製品の場合はdiscontinue_on
と設定します。 available_on
が現在の日付よりも小さく、discontinue_on
が現在の日付より大きいフロントエンドでは、その製品のみが表示されます。
このソリューションはお勧めできません。指定した名前の製品のみを表示するようにコントローラをハードコーディングしています( "Ruby on Rails Tote")。よりクリーンなソリューションを使用したい場合は、コントローラーのデフォルト検索でモデルのカスタムスコープを使用します。 Spreeはデフォルトではransackを使ってクエリーを作成しています。 – Argonus