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

Cor*_*ley 11 ruby-on-rails ruby-on-rails-3

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

@photos = Photo.paginate :page=>params[:page], :order => "date DESC", :per_page => 2
Run Code Online (Sandbox Code Playgroud)

出于某种原因,我的排序顺序没有受到尊重.分页功能正常(例如每页的数量)但订单根本不起作用.我喜欢用不同的值尝试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
Run Code Online (Sandbox Code Playgroud)

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

mis*_*lav 17

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

@photos = Photo.reorder("date DESC").page(params[:page]).per_page(12)
Run Code Online (Sandbox Code Playgroud)

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


Cor*_*ley 1

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

default_scope :order => 'date'
Run Code Online (Sandbox Code Playgroud)

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