在 JBuilder 视图中呈现分页页面

Rendering paginated pages in JBuilder views

我目前正在对具有超过 9000 个项目的查询与会者的 return 进行分页。我的页面和路由工作正常,但我希望它们作为指向该结果页面的可点击链接出现在页面底部。我在使用 JBuilder 方面比较陌生 我正在使用 Kaminari gem 以及 API-Pagination gem 并且想知道如何将 visible/clickable 页码添加到根据 Kaminari Docs <%= paginate @attendees %> 的 JBuilder 视图就足够了。但据我所知,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 %>

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