在SpreeCommerce API中使用taxon_id搜索产品

时间:2014-06-26 18:03:22

标签: ruby-on-rails api spree

我正在尝试使用taxon_ids作为过滤器从SpreeCommerce API搜索产品。 The search api使用ransack gem predicates进行搜索。我试过了:

/api/products?q[taxon_ids_cont]=x

(其中x是分类单元的id)。我也尝试过:

/api/products?q[taxon_ids_in]=x

并且都返回所有产品的json而不进行过滤。我应该在products端点上使用哪些参数来获取由taxon_ids过滤的产品,或者我还能如何解决此问题?

1 个答案:

答案 0 :(得分:5)

我找到了解决方案。 SpreeCommerce API在taxons控制器中有一个名为products的操作,可以通过/api/taxons/products端点访问。

def products
    # Returns the products sorted by their position with the classification
    # Products#index does not do the sorting.
    taxon = Spree::Taxon.find(params[:id])
    @products = taxon.products.ransack(params[:q]).result
    @products = @products.page(params[:page]).per(500 || params[:per_page])
    render "spree/api/products/index"
  end

端点采用参数id,并可选择:q参数a ransack gem predicate

例如url:

/api/taxons/products?id=1

将返回分类下所有产品的json,其中id为1

/api/taxons/products?id=1&q[name_cont]=Bag

将返回分类号为1的产品的json,其名称包含单词Bag。我不确定为什么官方API指南中缺少这条信息。