【问题标题】:How do I add pagination to JSON in Ruby?如何在 Ruby 中向 JSON 添加分页?
【发布时间】:2016-12-25 16:55:21
【问题描述】:

我有一个从 CSV 加载几千行的 GET 请求。我从中取出所有行并将其转换为哈希。

我的 GET 请求方法是这样的

def index 

 rows = []
  CSV.foreach('test.csv', headers: true) do |row|
    rows << row.to_hash
   json_data = rows.to_json #converts all of the rows to JSON data
    @users = json_data
end

我可以在 DOM 中显示这个 json 数据,但是这需要很长时间才能加载。我尝试了将其默认为每页 25 个条目的 will_paginate gem。这很好,但是它仍然使用分页标题一次加载所有数据。

那么,我该怎么做才能只为第一页加载 25 行 json,然后当我选择第 2 页时,它会加载接下来的 25 行,依此类推,直到我浏览完所有数据?

感谢您的 Ruby/JSON 向导提供的任何帮助

【问题讨论】:

    标签: ruby-on-rails json ruby pagination


    【解决方案1】:

    Kaminari 可以对任意数组进行分页:

    @paginatable_array = Kaminari.paginate_array(rows).page(params[:page]).per(25)
    

    在将 rows 数组转换为 json 之前,对它执行此操作(因为它必须是一个数组)。

    https://github.com/amatsuda/kaminari#paginating-a-generic-array-object

    【讨论】:

    • 谢谢!我会试一试。现在这会一次加载我的所有数据吗?还是只加载前 25 行,然后在选择第 2 页时加载接下来的 25 行?因此不会杀死我的服务器尝试加载所有内容
    • 好的那种作品。它确实返回了我的数据的分页。但它会一次调用!我只想让它调用前 25 行。而已。然后在我单击 Next 后,它将拨打电话并获取接下来的 25 行。人们如何处理大量数据?如果您正在读取包含数千行的查询,如何一次只获取一个部分而不是等待所有数据返回?
    • 您正在使用的 CSV 库还有其他方法可以让您获得恰到好处的行数。但是您必须根据当前页面计算从哪一行开始。公式为:(page - 1) * per + 1
    猜你喜欢
    • 2015-10-16
    • 2019-04-16
    • 2014-05-10
    • 1970-01-01
    • 1970-01-01
    • 2017-03-06
    • 2010-12-18
    • 2014-09-16
    • 2021-05-28
    相关资源
    最近更新 更多