kaminari:未定义的方法`paginate'用于#<activerecord :: relation:0x007f9933670ab0> </activerecord :: relation:0x007f9933670ab0>

时间:2013-02-18 06:40:45

标签: ruby-on-rails-3 kaminari

在我的控制器中,我有:

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

当我尝试渲染时,我得到了上述错误。摆脱where,sort和reverse子句摆脱了问题,但我需要它们。我怎么能同时拥有这两个?

3 个答案:

答案 0 :(得分:0)

当您调用sort_by {|u| u.created_at}时,您将数据从db获取到数组并在ruby端对其进行排序。

如果你想要paginate 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])

答案 1 :(得分:0)

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

@bills = Bill.where(:param1 => x, :param2 => y).order('created_at DESC').paginate(:page => params[:page])

答案 2 :(得分:0)

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