狂欢只显示当前分类中的产品而不是当前的分类和后代

时间:2014-09-18 21:54:45

标签: ruby-on-rails ruby ruby-on-rails-4 spree

在像/服装这样的分类页面上如何更改它只显示衣服而不是服装及其子类别中的产品?在taxons_controller.rb中,它正在调用

@searcher = build_searcher(params.merge(:taxon => @taxon.id))
@products = @searcher.retrieve_products

在retrieve_products https://github.com/spree/spree/blob/85da083faf81a4b0150e183d2f7aec988e674b07/core/lib/spree/core/search/base.rb#L15中,它正在使用

get_base_scope

反过来使用:

base_scope.in_taxon(taxon) unless taxon.blank?

https://github.com/spree/spree/blob/b66ea0229646062acb7b6f89ac2447f5ffc862fb/core/app/models/spree/product/scopes.rb#L78甚至在范围内说它包含后代。如何覆盖此选项以仅显示当前类别中的产品?

1 个答案:

答案 0 :(得分:2)

发现我必须覆盖模型中的搜索范围。如果有人发现这个,请参考:

    module Spree
      Product.class_eval do
        add_search_scope :in_taxon do |taxon|
          Spree::Product.joins(:taxons).where(Taxon.table_name => { :id => taxon.id }).
          order("spree_products_taxons.position ASC")
        end
      end
    end