2017-05-18 126 views
0

我正在使用kaminari寶石進行分頁。問題是我需要在4個元素之後的第一頁上分頁,並且在25個元素之後的所有其他頁面上分頁。它可以配置kaminari來解決我的問題? 這裏是一個用法:如何正確設置kaminari

你可以離開了所有的轉發/前幾頁相關的代碼
.pagination 
    .pagination__back 
    - if params[:page] && params[:page].to_i > 1 
     = link_to "Previous news", news_items_path(page: params[:page].to_i - 1) 
    - else 
     = "" 
    .pagination__forward 
    - if params[:page] 
     = link_to "Next news", news_items_path(page: params[:page].to_i + 1) 
    - else 
     = link_to "Next news", news_items_path(page: 2) 

回答

1

第一。 Kaminari已經與其幫手解決了這個問題。 對於這個問題,您的視圖中,使用下面的代碼:

= paginate @your_resource 

,這會使得一些通過HTML5標籤包圍頁= N分頁鏈接? (Source

爲了有一個分頁資源,你想下面的代碼添加到您的控制器:

@your_resource = YourResource.order(:foobar).page(params[:page]) 
# params[:page] will get added to each "paginated" request by Kaminari 
# if you use its previously mentioned helper method. 

現在你想有一個動態的上限。對於這個問題,我建議將是這樣的:

def index 
    @your_resource = YourResource.order(:foobar).page(params[:page]).per(dynamic_limit(params[:page])) 
end 

private 
def dynamic_limit(current_page = 1) 
    if current_page == 1 
    return 4 
    else 
    return 25 
    end 
end 

這樣,您將檢查當前頁面,如果它是第一個頁面,它會的結果限制爲4。否則,25