0

在我的控制器中,我有:

@bills = Bill.where(:param1 => x, :param2 => y).sort_by {|u| u.created_at}.reverse.paginate(:page => params[:page])

当我尝试渲染时,我得到了上述错误。摆脱 where、sort 和 reverse 子句可以解决问题,但我需要它们。我怎么能两者兼得?

4

3 回答 3

0

当您调用时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])
于 2013-02-18T06:56:41.370 回答
0

使用 AR 链。sort_by 产生一个数组。

@bills = Bill.where(:param1 => x, :param2 => y).order('created_at DESC').paginate(:page => params[:page])
于 2013-02-18T06:57:04.290 回答
0

我将 gem meta_search ( usage ) 与 gem will_paginate ( link ) 结合使用。我认为它可以在这里帮助你。

于 2013-03-20T10:22:04.797 回答