0

テーブルにデータを入力する 1 回のリクエストで文字通り数千のレポートを生成するシステムがあり、kamanari を使用して 1 ページあたり 20 レコードをページ分割します。1 回のリクエストで数千のレポートが読み込まれる可能性があるため、リクエストの形式が html か json かに関係なく、読み込みに数分かかることがあります。カミナリでいろいろやってみました。

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 のグループにページ分割するだけです。2 番目のページをクリックしても、ページ分割ルート全体を再度通過し、10,000 レコードをクエリして、ページに 20 レコードを表示します。

これではなく:

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

私もこれを試しました:

= paginate @reports, :total_pages => 2

これにはまだ時間がかかりますが、存在するすべてのページではなく、合計 2 ページしか表示されません。

私がやろうとしていることは次のとおりです。合計 100 レコードがあり、20 のグループに 50 ページあるとします。最初の 20 のみを照会し、それをビューに送り返し、それらの 20 レコードをビューに入力し、小さな矢印記号を示します。もっとあること。次に、ユーザーがその矢印記号をクリックすると、次の 20 レコードのセットのみが照会され、それらが表示されるように送り返されます。一度に非常に多くのレコードをクエリして、ビュー全体にそれらを入力する必要はありません。

4

1 に答える 1

0

以下の行はすべてのデータをロードしています:

 reports = unit.reports_for(history_date_range)

performanceデータをロードした後、およびに関してページネーションを使用しないのと同様のページネーションを使用していresponsivenessます。したがって、このクエリでページネーションを使用する必要があります。クエリの詳細を教えていただければ、正確な回答を得るのに役立ちます。

于 2013-03-20T16:33:29.350 に答える