如何使用Rails Gem在Shopify API产品上添加分页

时间:2018-10-30 06:27:49

标签: ruby-on-rails ruby api pagination shopify

我正在使用rails gem shopify API gem来获取shopify产品。我正在获取这样的产品:

ShopifyAPI::Product.find(:all, params: { page: parmas[:page], 
                                          limit: 10, 
                                          title: params[:search]
                                        })

此API返回按标题搜索的商品,数量上限为10。 那么如何在我的视图上添加分页,或者我可以使用will_paginate gem? 请帮助!,谢谢!

2 个答案:

答案 0 :(得分:0)

您可以将Kaminari.paginate_array(*args)与数组(Shopify产品的数组)作为第一个参数,并将选项与哈希一起使用,在其中必须将值设置为total_count键。

完整示例:

@paginatable_array = Kaminari.paginate_array(@shopify_products, total_count:145).page(1).per(10)

使用1作为.page方法的参数,因为您的数组将仅包含10个对象(如果在视图中限制为10个和10个对象) 在视图中只需使用辅助方法

<%= paginate @paginatable_array %>

我希望这会有所帮助!

答案 1 :(得分:0)

我认为您的工作迟到了。但这是怎么做的:

示例

.+? matches any character (except for line terminators)
+? Quantifier — Matches between one and unlimited times, as few times as possible, expanding as needed (lazy)
Positive Lookahead (?=REFERENCE)

因此,您可以根据每个循环中收到的内容创建可分页的数组。第一次调用定义了对所有后续调用fetch_next_page的限制。就我而言,每个页面包含3个元素,最多可以包含250个元素。

另一种方法是使用shopify“ next_page_info”参数进行导航,因此您只需要获取第一个查询并包括所有过滤器,然后仅使用页面信息(previous_page_info或next_page_info)向后/向前导航即可。

@orders = ShopifyAPI::Order.find(:all, :params => {:status => "any", :limit => 3, :order => "created_at DESC" })
@orders.each do |order|

  id = order.id
  name = order.name
end

while @orders.next_page?
  @orders = @orders.fetch_next_page
  @orders.each do |order|

    id = order.id
    name = order.name
  end
end

此处有更多信息:https://github.com/Shopify/shopify_api#pagination

致谢。