我想为消息系统创建分页,其中显示的第一页包含最旧的消息,后续页面显示较新的消息。
例如,如果正常分页{a,b,c,d,e,f,g,h,i}每页 3 个是:
{a,b,c,d,e,f,g,h,i}
{a,b,c}, {d,e,f}, {g,h,i}
那么反向分页将是:
{g,h,i}, {d,e,f}, {a,b,c}
我计划在页面前面添加内容,以便结果与正常分页相同,只是从最后一页开始。
这可能吗?kaminari?
kaminari
Kaminary.paginate_array不生成带有偏移量和限制的查询。出于优化原因,您不应该使用它。
Kaminary.paginate_array
相反,你可以这样做:
@messages = query_for_message.order('created_at DESC').page(params[:page]).per(3)
Where query_for_message代表用于检索分页记录的任何查询。例如,它可以是特定对话的所有消息。
query_for_message
现在在视图文件中,您只需要显示@messages以相反的顺序。例如:
@messages
<%= render :collection => @messages.reverse, :partial => 'message' %> <%= paginate @messages %>