Ошибка с пагинацией Kaminari в Rails 3 - PullRequest
2 голосов
/ 21 ноября 2011

Я пытаюсь реализовать разбиение на страницы в своем приложении Rails 3 с Kaminari, но получаю следующую ошибку:

undefined method `page' for #<Array:0x007fe43f4b0e80>

Это то, что у меня в контроллере:

@stories = Story.find_all_by_keynote_id(@keynote, :order => 'created_at DESC').page(params[:page])

И это то, что я считаю:

<%= paginate @stories %>

Я думаю, что есть проблема с "find_all_by_keynote_id", но я не уверен, как это исправить.

Спасибовы!

Ответы [ 3 ]

5 голосов
/ 21 ноября 2011

Kaminari также может разбивать массивы (что у вас есть)

array = Story.find_all_by_keynote_id(@keynote, :order => 'created_at DESC')
@stories = Kaminari.paginate_array(array).page(params[:page])
3 голосов
/ 21 ноября 2011

Да, но как запросить то же самое без массива? Это то, что мне нужно.

@stories = Story.where(:keynote_id => @keynote).order('created_at DESC').page(params[:page])

или

Keynote.has_many :stories

@stories = @keynote.stories.order('created_at DESC').page(params[:page])
2 голосов
/ 21 ноября 2011

Вы передаете методу страницы массив, когда он ожидает отношения активной записи. Если вы не знакомы с этим термином, вам следует обратиться к справочнику по активной записи .

Согласно документам Каминари, именно так вы и должны его использовать:

@stories = Story.order(:created_at).page(params[:page])
...