2017-05-18 51 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