will_paginate默认显示最后一页(保持时间顺序排列)(will_paginate show

2019-09-22 04:46发布

我建立一个索引页面,在这里我需要显示它有个约会结果,按时间顺序排列(从最早日期到最新的一个),但我需要一直默认显示最后一页。

我不能使用DESC为了使日期,因为它会破坏什么,我需要这个=(全部目的。

TL; DR:我需要显示分页日志列表,按日期升序,但在最后一页开始。 这可能与will_paginate? 谢谢!

Answer 1:

你可以建立自己的查询,得到在第一轮的总页数,然后在接下来的通取的最后一页。

query = Log.some_scope
total_pages = query.paginate(:page => 1).total_pages
@logs = query.paginate(:page => total_pages)

你也可以尝试雷宝石,而不是will_paginate这使得这个有点更舒适。



Answer 2:

这是我终于抵达了解决方案:

if params[:page]
    @collection = @q.result(distinct: true).paginate(:page => params[:page], :per_page => 30)
else
    last_page = @q.result(distinct: true).paginate(:page => params[:page], :per_page => 30).total_pages
    @collection = @q.result(distinct: true).paginate(:page => last_page, :per_page => 30)
end

这不是幻想,它需要一些重构,或许可以使用记忆化来避免调用paginate方法两次,但嘿它的工作原理。 如果您想直接访问一个页面,它呈现像往常一样,但如果你没有指定页面,您在默认情况下采取的最后一页。



Answer 3:

试试这个代码:

if params[:page]
    @collection = @q.result(distinct: true).paginate(:page => params[:page], :per_page => 30)
session[:lastpage] = params[:page]
else
    @collection = @q.result(distinct: true).paginate(:page => session[:lastpage] = params[:page], :per_page => 30)
end


Answer 4:

if params[:page]
    @collection = ordered_query_results.paginate(page: params[:page], per_page: PER_PAGE)
else
    total_results = ordered_query_results.count
    last_page = total_results / PER_PAGE + (total_results % PER_PAGE == 0 ? 0 : 1)
    @collection = ordered_query_results.paginate(page: last_page, per_page: PER_PAGE)
end


文章来源: will_paginate show the last page by default (keeping chronological order)