2016-08-18 33 views
0

我有一個GET請求,從CSV中加載數千行。我將所有行從它中取出並將其轉換爲散列。如何在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 

我可以顯示在此DOM JSON數據

我的GET請求的方法,然而這需要很長的時間來加載。我試過了will_paginate gem,默認每頁25個條目。這工作正常,但它仍然一次加載分頁標題的所有數據。

那麼,我該如何做到這一點,以便它只爲第一頁加載25行json,然後當我選擇頁面2時,它會加載下一個25,等等,直到我瀏覽完所有數據?

欣賞你的任何幫助的Ruby/JSON奇才那裏

回答

0

雷可分頁任意陣列:

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

這樣對你的rows陣列將其轉換爲JSON之前(因爲它需要數組)。

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

+0

謝謝!我會試一試。 現在會一次加載我所有的數據嗎?或者它會只加載前25行,然後再選擇第25頁時加載25行?因此,不殺我的服務器試圖加載一切 – menix

+0

確定那種工作。它確實會返回我的數據的分頁。但它一次打完電話!我只是想讓它打響前25行。而已。然後,我點擊下一步後,它會撥打電話並獲取下25行。 人們如何處理大量數據?如果您正在閱讀包含成千上萬行的查詢,那麼您如何一次只獲取一個部分而不是等待所有數據被返回? – menix

+0

您正在使用的CSV庫有其他方法可以讓您獲得恰到好處的行數。但是,您必須根據當前頁面計算出哪條線開始。公式爲:'(page - 1)* per + 1' – DiegoSalazar