Использование will_paginate для поиска страницы, на которой существует запись

Я пытаюсь найти способ указать will_paginate, с какой страницы начинать работу с данным объектом, и у меня возникают проблемы с поиском на нем каких-либо документов (может быть, в will_paginate нет метода??).

Вот мой сценарий:

Страница, на которой я показываю элемент, имеет 2 столбца, левый отображает 25 элементов за раз с использованием will_paginate.

Когда пользователь нажимает кнопку электронной почты, я генерирую исходящие электронные письма, содержащие ссылку для повторного входа на этот конкретный элемент. Ссылка ведет на мою индексную страницу и передает идентификатор объекта, который я хочу, НО мне нужно указать will_paginate, какую страницу отображать, поскольку элемент может существовать на странице 1, 2, 3 и т. д.

Я знаю, что могу найти все предметы, а затем найти ранг моего текущего предмета и немного посчитать, но мне было интересно, есть ли лучший способ, например, есть ли у will_paginate какие-нибудь забавные методы для выполнения чего-то подобного ??

Спасибо!


person Mike    schedule 22.11.2012    source источник
comment
Как насчет передачи params[:page] через кнопку электронной почты, чтобы вы могли передать это в ссылке на тело электронной почты. Таким образом, вы можете ссылаться на тот же URL-адрес с номером страницы. Пока ваш запрос к базе данных остается прежним, он должен работать.   -  person agmcleod    schedule 23.11.2012
comment
Проблема в том, что список, который я создаю для страницы 1, генерирует 25 самых последних элементов, поэтому, скажем, запись, для которой я отправил электронное письмо, была № 24 в списке на странице 1, а затем после создания 2 новых элементов теперь будет быть на странице 2... :P   -  person Mike    schedule 24.11.2012
comment
Тогда то, о чем вы говорите, включает в себя гораздо больше, чем просто разбиение на страницы, вам нужно будет запомнить все результаты.   -  person agmcleod    schedule 26.11.2012


Ответы (1)


Да, я понял проблему. Поднимите аналогичную проблему со мной. В моем случае: -

Работайте со мной

@posts = Post.all.order_by(:created_at)

@post = @posts.find_by(id: params[:id])

total_posts_count = @posts.where("posts.created_at <= ?", @post.created_at).count

@page = (total_posts_count/per_page.to_f).ceil

@posts = @posts.paginate(per_page: per_page, page: @page)

Логика здесь...

total_posts = 50
per_page = 25

50/25 = 2
person Dheeraj Kushwah    schedule 13.11.2019