私のコントローラーには、次のものがあります。
@bills = Bill.where(:param1 => x, :param2 => y).sort_by {|u| u.created_at}.reverse.paginate(:page => params[:page])
そして、レンダリングしようとすると、上記のエラーが発生します。where、sort、reverse句を取り除くと問題がなくなりますが、私はそれらが必要です。どうすれば両方を手に入れることができますか?
私のコントローラーには、次のものがあります。
@bills = Bill.where(:param1 => x, :param2 => y).sort_by {|u| u.created_at}.reverse.paginate(:page => params[:page])
そして、レンダリングしようとすると、上記のエラーが発生します。where、sort、reverse句を取り除くと問題がなくなりますが、私はそれらが必要です。どうすれば両方を手に入れることができますか?
を呼び出すとsort_by {|u| u.created_at}
、データを db から配列にフェッチし、それを ruby 側でソートします。
ruby 配列データのページネーションが必要な場合は、これを試してください。
@bills = Kaminari.paginate_array(Bill.where(:param1 => x, :param2 => y)).page(params[:page]).per(PER_PAGE_RECORDS)`
しかし、DBクエリでデータをソートするより良い方法
@bills = Bill.where(:param1 => x, :param2 => y).order("created_at DESC").paginate(:page => params[:page])
ARチェーンを使用します。sort_by は配列になります。
@bills = Bill.where(:param1 => x, :param2 => y).order('created_at DESC').paginate(:page => params[:page])