Потокобезопасный код - это код, который будет работать, даже если много потоков исполняют его одновременно.
page = (number_of_records_before_RECORD / number_of_records_per_page) + 1
Другими словами. Если у вашей фотографии ID 40 и до этого было 25 записей (при условии, что некоторые записи были удалены), с 20 записями на страницу:
page = (25 / 20) + 1 = 2
Вы можете подсчитать количество записей перед выбранной записью, используя Model.count (: условия => ['id ', record.id],: order => 'id')
.
Правильный запрос зависит от того, какой фильтр сортировки вы применяете к этой таблице при перечислении всех объектов.
Номер страницы во многом зависит от результатов вашего поиска. В вашем поиске может быть 1, 10 или 100 страниц в зависимости от набора результатов и количества элементов на странице.
Любая ссылка «показать все фотографии» может содержать информацию поиска и разбивки на страницы, используя параметры GET, как вы я описал. Или сохраните и извлеките через cookie, чтобы результаты поиска сохранялись до тех пор, пока пользователи не очистят или не выберут новый поиск.