Rails 4将重复结果

时间:2014-06-01 04:16:55

标签: ruby-on-rails will-paginate

我的一个索引页面在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字段且分页事件都具有相同的日期值也可能是相关的。

1 个答案:

答案 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

上回答