2016-08-18 10 views
0

私はCSVから数千の行をロードするGET要求を持っています。私はそれからすべての行を取得し、それをハッシュに変換します。私はDOMでこのJSONデータを表示することができRubyでJSONにページネーションを追加するにはどうすればよいですか?

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 

次のようになります

マイGETリクエストメソッドは、しかし、それはロードに時間がかかります。私はwill_paginate gemを試してみましたが、デフォルトではページあたり25個のエントリになっています。それはうまくいきますが、まだすべてのデータをページ分割ヘッダーで一度にロードしています。

これは、ページ1に25行のjsonをロードするだけです。ページ2を選択すると、次の25ページが読み込まれるので、すべてのデータを処理するまで?

は、Ruby/JSONが出ウィザードあなたから任意の助けに感謝

答えて

0

雷は、任意の配列をページ分割することができます

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

それはする必要がありますので、あなたが(JSONに変換する前に、あなたのrows配列にそれを行います配列)。

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

+0

ありがとうございます!私はそれを試してみましょう。 これで、すべてのデータが一度にロードされますか?または、ページ2を選択すると最初の25行、次に25行だけロードされますか?したがって、すべてをロードしようとしている私のサーバーを殺していない – menix

+0

そのような作品の種類。私のデータのページ区切りを返します。しかし、それは一度にすべての呼び出しを行います!私は最初の25行を呼び出すだけです。それでおしまい。次に[次へ]をクリックすると、呼び出しが行われ、次の25行がフェッチされます。 人々は大量のデータをどのように扱いますか?何千もの行を含むクエリを読み込んでいる場合、すべてのデータが返されるのを待つのではなく、一度にセクションを取得するにはどうすればよいでしょうか? – menix

+0

使用しているCSVライブラリには、適切な量の行を取得できる他の方法があります。しかし、現在のページに応じて、どの行を開始するかを計算する必要があります。式は次のとおりです: '(page-1)* per + 1' – DiegoSalazar

関連する問題