【问题标题】:How can I add pagination on shopify API products with rails gem如何使用 rails gem 在 shopify API 产品上添加分页
【发布时间】:2019-04-03 03:42:01
【问题描述】:

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

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

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

【问题讨论】:

  • 您可以使用kaminari gem。这个 gem 可以将数组转换成可分页数组
  • 但我认为它对 shopify API 没有用,因为我无法在一次 API 调用中从 shopify 获取所有产品。我必须在 shopify API 调用中传递参数页面,它会一次返回 10 个产品。当我调用 shopify API 时,我可以跟踪产品总数并可以根据页面获取产品。但我无法管理这些产品。

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


【解决方案1】:

您可以将 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 %>

希望对你有帮助!

【讨论】:

    【解决方案2】:

    我认为你的工作迟到了。但这是怎么回事:

    例子

    @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
    

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

    另一种方法是使用 shopify "next_page_info" 参数进行导航,因此您只需获取第一个查询并包含所有过滤器,然后只需使用页面信息(previous_page_info 或 next_page_info)导航回/fwd。

    Example 2
    first_batch_products = ShopifyAPI::Product.find(:all, params: { limit: 50 })
      second_batch_products = ShopifyAPI::Product.find(:all, params: { limit: 50, page_info: first_batch_products.next_page_info })
    
    next_page_info = @orders.next_page_info
    prev_page_info = @orders.previous_page_info
    

    更多信息在这里:https://github.com/Shopify/shopify_api#pagination

    问候。

    【讨论】:

      猜你喜欢
      • 2021-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-05
      • 1970-01-01
      • 2021-01-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多