铁轨和kaminari

我有一个系统,在一个请求中生成数千个报告来填充表格,我使用kamanari为每页分页20条记录。 因为在单个请求中可能会有数千个报告被加载,所以无论请求格式是html还是json,它们有时需要几分钟才能加载。 我和kaminari尝试过很多东西。

my_controller.rb def my_table reports = unit.reports_for(history_date_range) #This could return possibly 10,000 reports paginated_reports = reports.order('time desc').page(params[:page]).per(20) @reports = paginated_reports ... end my_table.html.haml - @reports.each do |r| ... = paginate @reports.page(params[:page]).per(20) 

上述问题是kaminari不会仅向视图发送20条记录。 例如,它发送所有10,000个。 然后将它们分成20组分组。即使我点击第二页,它再次遍历整个分页路径,查询10,000条记录并在页面上显示20条记录。

而不是这个:

 = paginate @reports.page(params[:page]).per(20) 

我也试过这个:

 = paginate @reports, :total_pages => 2 

这仍然需要很长时间,但只显示总共2页,而不是所有页面。

我想要做的是如下。 假设总共有100个记录,这意味着有20个组中有50个页面。我只想查询前20个,将其发送回视图,并用这20个记录填充视图并有一个小箭头符号指示还有更多。 然后,当用户单击该箭头符号时,它仅查询下一组20条记录,将它们发送回视图,依此类推。 我不想一次查询这么多记录并让整个视图填充它们。

下面一行是加载所有数据:

  reports = unit.reports_for(history_date_range) 

加载数据后,您使用的分页类似于在performanceresponsiveness方面不使用分页。 所以你需要在这个查询上使用分页。 如果您可以提供有关您所查询内容的更多详细信息,将有助于确切答案。