好的,我确信我的问题有一个简单的解决方案。这是我的controller.rb
代码:
@photos = Photo.paginate :page=>params[:page], :order => "date DESC", :per_page => 2
出于某种原因,我的排序顺序没有受到尊重。分页功能正常(例如每页的数量),但订单根本不起作用。我尝试使用ASC
和DESC
等不同的值以及不同的字段无济于事。在首先移动“订单”后,这是我的整个控制器功能:
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
参数正在运行,因此我知道分页正在运行,我只是没有排序而且没有错误。我将不胜感激任何帮助!
答案 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后,订单开始正常运行。问题解决了。