11

さて、私の問題には簡単な解決策があると確信しています。これが私の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 ジェムでこれを理解することはできません。前述したように、:per_pageパラメーターが機能しているため、ページネーションが機能していることがわかります。並べ替えもエラーも発生していません。助けていただければ幸いです。

4

3 に答える 3

19

default_scopeメソッドでオーバーライドできないデフォルトの順序( による)がありorder()、順序付けルールを追加するだけです。ただし、順序をリセットすることはできます。

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

@photos = Photo.allところで、コントローラー アクションからを削除する必要があります。ページ付けされた一連の写真を取得する場合、最初にデータベースからすべてを取得するのは意味がありません。

于 2013-04-03T16:00:06.677 に答える
2

使用してみてください:

Photo.per_page = 2
Photo.page(params[:page]).order("date DESC")
于 2013-03-31T16:13:55.873 に答える
1

他のユーザーの質問に答えた後、問題を解決できました。私の「写真」モデルを見直した後、@mislav のリクエストで、次のものが含まれていることに気付きました。

default_scope :order => 'date'

この default_scope を削除した後、順序付けが正常に機能し始めました。問題が解決しました。

于 2013-04-03T05:02:48.063 に答える