Ruby on Rails分页:排序顺序不受尊重(will_paginate gem)

时间:2013-03-31 01:12:44

标签: ruby-on-rails ruby-on-rails-3

好的,我确信我的问题有一个简单的解决方案。这是我的controller.rb代码:

@photos = Photo.paginate :page=>params[:page], :order => "date DESC", :per_page => 2

出于某种原因,我的排序顺序没有受到尊重。分页功能正常(例如每页的数量),但订单根本不起作用。我尝试使用ASCDESC等不同的值以及不同的字段无济于事。在首先移动“订单”后,这是我的整个控制器功能:

def index
  @photos = Photo.all
  @photos = Photo.order("date DESC").paginate(:per_page => 12, :page => params[:page])
  respond_to do |format|
    format.html # index.html.erb
    format.json { render :json => @gallery }
  end
end

我以前在Rails 1中完美地工作了,我无法用will_paginate gem来解决这个问题。正如我所提到的,:per_page参数正在运行,因此我知道分页正在运行,我只是没有排序而且没有错误。我将不胜感激任何帮助!

3 个答案:

答案 0 :(得分:16)

您有一个默认订单(通过default_scope),您无法使用order()方法覆盖,只会添加更多订购规则。但是,您可以重置订单:

@photos = Photo.reorder("date DESC").page(params[:page]).per_page(12)

顺便说一下,您需要从控制器操作中删除@photos = Photo.all。如果您要获取一组分页的照片,那么首先从数据库中获取它们是没有意义的。

答案 1 :(得分:2)

尝试使用:

Photo.per_page = 2
Photo.page(params[:page]).order("date DESC")

答案 2 :(得分:1)

在回答了其他一些用户的问题后,我能够解决问题。在审查了我的“照片”模型后,应@mislav的要求,我意识到它包含:

default_scope :order => 'date'

删除此default_scope后,订单开始正常运行。问题解决了。