การแสดงผลเพจที่มีการแบ่งหน้าในมุมมอง JBuilder

ขณะนี้ฉันกำลังแบ่งหน้าการส่งคืนผู้เข้าร่วมแบบสอบถามที่มีมากกว่า 9000 รายการ หน้าเว็บและการกำหนดเส้นทางของฉันทำงานได้ดี แต่ฉันต้องการให้ปรากฏที่ด้านล่างของหน้าเป็นลิงก์ที่สามารถคลิกได้ไปยังหน้านั้นของผลลัพธ์ ฉันค่อนข้างใหม่ในการใช้ JBuilder ฉันใช้ Kaminari gem เช่นเดียวกับ API-Pagination gem และต้องการทราบวิธีเพิ่มหมายเลขหน้าที่มองเห็นได้/คลิกได้ลงในมุมมอง 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