Рендеринг разбитых на страницы страниц в представлениях JBuilder

В настоящее время я разбиваю на страницы результаты запроса участников, которые содержат более 9000 элементов. Мои страницы и маршрутизация работают нормально, но я хотел бы, чтобы они отображались внизу страницы в виде интерактивных ссылок на эту страницу результатов. Я относительно новичок в использовании JBuilder. Я использую гем Kaminari, а также гем API-Pagination и хотел бы знать, как добавить видимые/кликабельные номера страниц в представление JBuilder в соответствии с Kaminari Docs <%= paginate @attendees %> — это все, что нужно. Но насколько я понимаю, JBuilder не работает или не интерпретирует эту логику как чисто производственные объекты JSON? Приветствуются любые советы, а также лучшее объяснение того, что делает JBuilder.

Controller

module Reports
  class ConferencesController < ::ApplicationController
    def attendees
      @conference = Conference.find(attendee_params[:conference_id])
      @attendees = @conference.attendees

      paginate json: @attendees, per_page: 500
    end

    private

    def attendee_params
      params.permit(:conference_id)
    end
  end
end
View
json.conference @conference, partial: 'conference', as: :conference
json.attendees @attendees, partial: 'attendee', as: :attendee


    <%= paginate @attendees %>


person steveks17    schedule 29.08.2020    source источник


Ответы (1)


Kaminari отлично работает с партиалами HTML, но есть некоторые дополнительные вещи, которые вам нужно сделать, чтобы настроить его для других форматов ответов. Вы можете удалить строку paginate json: @attendees, per_page: 500 из своего контроллера в пользу чего-то вроде

@attendees = @conference.attendees.page(params[:page]).per(500)

Кроме того, вам нужно будет предоставить дополнительную информацию вашему партиалу jbuilder для отображения этой информации.

Что-то вроде этого:

json.meta do
  json.total_pages @attendees.total_pages
  json.total_count @attendees.total_count
end
# See the Kaminari docs for more methods available https://github.com/kaminari/kaminari#the-page-scope
person Jack    schedule 13.11.2020