У меня есть текущая реализация will_paginate, которая использует метод paginate_by_sql для создания коллекции, подлежащей разбивке на страницы. У нас есть собственный запрос для total_entries, который очень сложен и создает большую нагрузку на нашу БД. Поэтому мы хотели бы вообще исключить total_entries из нумерации страниц.
Другими словами, вместо типичного отображения разбиения на страницы «предыдущий 1 [2] 3 4 5 следующий» мы хотели бы просто использовать только кнопку «следующий - предыдущий». Но нам нужно знать несколько вещей.
- Отображаем ли мы предыдущую ссылку? Конечно, это произойдет только в том случае, если записи, существующие до тех, которые отображаются в текущем выборе
- Мы отображаем следующую ссылку? Это не будет отображаться, если отображается последняя запись в коллекции.
Из документов.
Запрос на подсчет строк будет сгенерирован автоматически, если вы не укажете :total_entries. Если у вас возникли проблемы с этим сгенерированным SQL, вы можете выполнить подсчет вручную в своем приложении.
Итак, в конечном счете, идеальная ситуация выглядит следующим образом.
- Удалите счетчик total_entries, потому что он вызывает слишком большую нагрузку на базу данных.
- Отображение 50 записей за раз с полуразбивкой на страницы с использованием только кнопок «следующая/предыдущая» для навигации без необходимости отображения всех доступных номеров страниц.
- Отображать только следующую кнопку и предыдущую кнопку соответственно
Кто-нибудь работал с подобной проблемой или есть мысли по решению?