ruby-on-rails - 在 SpreeCommerce API 中使用 taxon_id 搜索产品

标签 ruby-on-rails api spree

我正在尝试使用 taxon_ids 作为过滤器从 SpreeCommerce API 中搜索产品。 The search api使用搜查 gem predicates用于搜索。我试过:

/api/products?q[taxon_ids_cont]=x

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

/api/products?q[taxon_ids_in]=x

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

最佳答案

我找到了解决方案。 SpreeCommerce API 在类群 Controller 中有一个名为 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

例如网址:

/api/taxons/products?id=1

将返回 id 为 1 的分类单元下所有产品的 json

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

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

关于ruby-on-rails - 在 SpreeCommerce API 中使用 taxon_id 搜索产品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24437265/

相关文章:

ruby-on-rails - Mechanize 错误 "too many bad responses"

ruby-on-rails - 重新启动部署在 Passenger 上的 Rails 应用程序时切换 ruby

ruby-on-rails - 缺少 spree gem,无法安装

ruby-on-rails - 在 Spree 上如何添加自己的自定义样式表

css - 如何限制 Bootstrap 容器的高度

ruby-on-rails - Rails 如何解析模型属性,因为它们未在模型中定义?

python - 让尝试更快地捕捉 Python

json - postman :通过表单数据的嵌套 JSON 的 POST 请求不起作用(而通过原始数据则正常)

php - 使用 simplexml_load_file 从 XML 提要中提取数据

ruby-on-rails - spree Action require_login 在分配给 before_action 过滤器时创建重定向循环