Каминари: разбивка на страницы ограниченной модели. Ответственность контроллера / представления

#ruby-on-rails #pagination #kaminari

#ruby-on-rails #разбивка на страницы #kaminari

Вопрос:

Я не уверен, что правильно озаглавил вопрос. В моем проекте у меня есть контроллер категорий с действием show

 def show
    @category = Category.find params[:id]
end
  

И, на мой взгляд, я отображаю все записи, связанные с этой категорией

 @category.posts.each do |post|
    link_to post.title, post
  

Итак, теперь я хочу добавить разбивку на страницы с помощью kaminari.
Я полагаю, что мог бы просто изменить @category.posts.each на @category.posts.page(params[:page]).each , но я также думаю, что это должно быть ответственностью контроллера. Или я ошибаюсь? Может быть, это совершенно нормально?

Спасибо всем.

Ответ №1:

Ваш метод show должен выглядеть следующим образом:

 def show
  @posts = Category.find(params[:id]).posts.page(params[:page])
end
  

И в поле зрения:

 @posts.each do |post|
  

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

1. Привет, метил. Мне все еще нужен доступ к @category (для создания заголовка и т.д.). Должен ли я просто создать две переменные экземпляра: @category и @posts?

2. Да, вы можете это сделать, и все будет абсолютно чисто и нормально.