Rails — использование Kaminari для разбивки на страницы?

#ruby-on-rails #kaminari

#ruby-on-rails #kaminari

Вопрос:

Я пытаюсь получить ссылку на следующую страницу. Как бы я это сделал? Я получаю следующую ошибку при вызове link_to_next_page

неопределенный метод `link_to_next_page’

 query = Posts.page(1).per(5).includes(author: :profile)

link = link_to_next_page(query, 'Next-Page')
 

Комментарии:

1.Вы уверены gem kaminari , что правильно установили? Можете ли вы убедиться, что @posts = Post.page(1).per(5) <%= paginate @posts %> это работает?

2. Возможно, вы используете link_to_next_page помощник где-то за пределами шаблонов rails?

3. @railscard Да, я использую его в своем контроллере. Мне нужно получить ссылку на следующую страницу и добавить ее в заголовок моего ответа. Возможно ли это?

4. попросите вас сослаться на это видео, объяснить очень красиво.. railscasts.com/episodes /…

5. Если вы хотите поместить заголовки ссылок RFC 5988, рассмотрите возможность использования api-разбивки на страницы

Ответ №1:

Помощники ссылок недоступны в контроллерах. Вы можете включить весь вспомогательный модуль в свой контроллер, но лучше использовать view_context для доступа к определенному вспомогательному методу:

 query = Posts.page(1).per(5).includes(author: :profile)    
link = view_context.link_to_next_page(query, 'Next-Page')
 

Удачи!

Комментарии:

1. Он больше не вылетает, но ссылка на следующую страницу пуста

Ответ №2:

 def paginate(query)
   query.offset!((@page-1) * @per_page)
   query.limit!(@per_page 1)

   result = query.to_a

   if (result.size > @per_page)
     result.pop
     response.headers['Link'] = CREATE_NEXT_AGE_LINK_HERE
   end

   result
end