我正在使用rails gem shopify API gem来获取shopify产品。我正在获取这样的产品:
ShopifyAPI::Product.find(:all, params: { page: parmas[:page],
limit: 10,
title: params[:search]
})
此API返回按标题搜索的商品,数量上限为10。 那么如何在我的视图上添加分页,或者我可以使用will_paginate gem? 请帮助!,谢谢!
答案 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
致谢。