我建立一个索引页面,在这里我需要显示它有个约会结果,按时间顺序排列(从最早日期到最新的一个),但我需要一直默认显示最后一页。
我不能使用DESC为了使日期,因为它会破坏什么,我需要这个=(全部目的。
TL; DR:我需要显示分页日志列表,按日期升序,但在最后一页开始。 这可能与will_paginate? 谢谢!
我建立一个索引页面,在这里我需要显示它有个约会结果,按时间顺序排列(从最早日期到最新的一个),但我需要一直默认显示最后一页。
我不能使用DESC为了使日期,因为它会破坏什么,我需要这个=(全部目的。
TL; DR:我需要显示分页日志列表,按日期升序,但在最后一页开始。 这可能与will_paginate? 谢谢!
你可以建立自己的查询,得到在第一轮的总页数,然后在接下来的通取的最后一页。
query = Log.some_scope
total_pages = query.paginate(:page => 1).total_pages
@logs = query.paginate(:page => total_pages)
你也可以尝试雷宝石,而不是will_paginate这使得这个有点更舒适。
这是我终于抵达了解决方案:
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
方法两次,但嘿它的工作原理。 如果您想直接访问一个页面,它呈现像往常一样,但如果你没有指定页面,您在默认情况下采取的最后一页。
试试这个代码:
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
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