Tôi có một thực hiện hiện tại của will_paginate mà sử dụng paginate_by_sql phương pháp để xây dựng bộ sưu tập được đánh số trang. Chúng tôi có truy vấn tùy chỉnh cho total_entries điều đó rất phức tạp và đặt một tải lớn trên DB của chúng tôi. Vì vậy, chúng tôi muốn cắt toàn bộ số lượng từ phân trang hoàn toàn.Sử dụng will_paginate không: total_entries để cải thiện một truy vấn dài
Nói cách khác, thay vì hiển thị phân trang thông thường của 'trước đó 1 [2] 3 4 5 tiếp theo', chúng tôi chỉ đơn giản là giống như nút 'tiếp theo - trước đó'. Nhưng chúng ta cần phải biết một vài điều.
- Chúng tôi có hiển thị liên kết trước không? Tất nhiên, điều này chỉ xảy ra nếu các bản ghi có sẵn trước khi các bản ghi được hiển thị trong lựa chọn hiện tại
- Chúng tôi có hiển thị liên kết tiếp theo không? Điều này sẽ không được hiển thị nếu hồ sơ cuối cùng trong bộ sưu tập đang được hiển thị
Từ docs
Một truy vấn cho các hàng đếm sẽ tự động được tạo ra nếu bạn không cung cấp: total_entries. Nếu bạn gặp sự cố với SQL được tạo này, bạn có thể muốn thực hiện việc đếm theo cách thủ công trong ứng dụng của mình.
Vì vậy, cuối cùng, tình huống lý tưởng là như sau.
- Tháo total_entries đếm bởi vì nó gây ra quá nhiều tải trên cơ sở dữ liệu
- Hiển thị 50 hồ sơ tại một thời điểm với semi-pagination chỉ sử dụng tiếp theo/nút trước để di chuyển và không cần để hiển thị tất cả các số trang có sẵn
- Chỉ hiển thị nút tiếp theo và nút trước đó cho phù hợp
Có ai đã làm việc với một vấn đề tương tự hoặc có suy nghĩ về giải pháp không?
Cảm ơn ý tưởng. Tôi sẽ hack và xem những gì tôi có thể nghĩ ra. Tôi đã có một số truy vấn SQL tùy chỉnh dài để giải quyết nhưng tôi nghĩ rằng tôi có thể làm cho chúng hoạt động thành giải pháp và có ý tưởng về hiệu suất sẽ như thế nào. Cảm ơn! – mwilliams
Cảm ơn bạn đã trả lời. Đẹp và đơn giản và tôi nhìn xa hơn một giải pháp đơn giản như vậy. Hầu hết việc triển khai của tôi đều được thực hiện và có vẻ tốt hơn nhiều. Mặc dù tôi đang gặp vấn đề với các nút tiếp theo/trước đó, nhưng tôi sẽ sớm nhận được nó. Cảm ơn một lần nữa! – mwilliams