簡體   English   中英

Ruby on Rails分頁:不遵守排序順序(will_paginate gem)

[英]Ruby on Rails Pagination: Sort order not respected (will_paginate gem)

好的,我敢肯定我的問題有一個簡單的解決方案。 這是我的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參數正在工作,所以我知道分頁正在工作,我只是沒有排序,也沒有錯誤。 我將不勝感激任何幫助!

您有一個默認訂單(通過default_scope ),您不能使用order()方法覆蓋它,而只能追加更多排序規則。 您可以重置訂單,但是:

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

順便說一句,您將要從控制器操作中刪除@photos = Photo.all 如果您要獲取一組分頁的照片,則首先從數據庫中獲取所有照片是沒有意義的。

嘗試使用:

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

回答其他一些用戶的問題后,我能夠解決該問題。 回顧了我的“照片”模型后,應@mislav的要求,我意識到它包含:

default_scope :order => 'date'

刪除此default_scope之后,訂購開始正常運行。 問題解決了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM