我的一个索引页面在will_paginate
的多个页面上显示相同的资源。我有其他页面完美分页,无法弄清楚出了什么问题。
在我的模型中,我有这种方法:
self.per_page = 10
def self.index_search(query)
if query.present?
self.approved.where("name ilike :q or ko_name ilike :q", q: "%#{query}%")
.order(date: :asc).group("id")
else
approved.upcoming.order(date: :asc).group("id")
end
end
然后在控制器中:
def index
@events = Event.index_search(params[:query]).paginate(page: params[:page])
end
在视图中:
<%= will_paginate @events, renderer: BootstrapPagination::Rails %>
通常,第一页上的最后一项在第二页的同一位置重复。
我在挖掘StackOverflow之后将.group("id")
添加到方法中,但我对我接下来要看的内容感到困惑。
编辑:
如果我将self.per_page = 10
更改为大于12的数字,则重复问题就会消失。我真的希望每页保持10个。
编辑:所有事件都有date
字段且分页事件都具有相同的日期值也可能是相关的。
答案 0 :(得分:0)
希望不要挖掘旧的记忆,但是......
我也遇到过这个问题。对我来说,它是由使用PostgreSQL引起的 - 我的解决方案是为id添加一个额外的sort_by子句。
更改
events.order(:start_date, :series_id).paginate(page: params[:page], per_page: 12)
到
events.order(:start_date, :series_id, :id).paginate(page: params[:page], per_page: 12)
再一次,世界上的一切都是正确的。
提出问题并在will_paginate:https://github.com/mislav/will_paginate/issues/420
上回答