在我的控制器中,我有:
@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)`
但更好的方法是在数据库查询中对您的数据进行排序
@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])