kaminari: неопределенный метод `разбить на страницы' для #‹ActiveRecord::Relation:0x007f9933670ab0›

В моем контроллере у меня есть:

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

И я получаю вышеупомянутую ошибку при попытке рендеринга. Избавление от предложений where, sort и reverse избавляет от проблемы, но они мне нужны. Как я могу иметь оба?


person user1436111    schedule 18.02.2013    source источник


Ответы (3)


Когда вы вызываете sort_by {|u| u.created_at}, вы извлекаете данные из базы данных в массив и сортируете их в рубиновой части.

Если вы хотите разбить данные массива 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])
person kr00lix    schedule 18.02.2013

используйте цепочки AR. sort_by приводит к массиву.

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

Я использую gem meta_search (использование) в сочетании с gem will_paginate (ссылка). Я думаю, что это могло бы помочь вам здесь.

person tingel2k    schedule 20.03.2013