Во-первых, я хотел бы еще раз повторить то, о чем, по моему мнению, вы просите, чтобы убедиться, что я понимаю — пожалуйста, поправьте меня, если я ошибаюсь.
Вы используете неподконтрольный вам API и отправляете ему запрос на конкретную страницу результатов. Например, вы отправляете запрос http://some-service.com?page=3
, и он отправляет обратно 10 результатов, а также сообщает, что общее количество доступных страниц равно 42.
Затем вы хотите показать пользователям вашего приложения результаты и указать, что они могут запросить предыдущую и следующую страницы, а также сообщить им, сколько всего страниц доступно. Когда пользователь вашего приложения щелкает ссылку next
, вы хотите сделать запрос на http://some-service.com?page=4
и т. д.
Я не думаю, что для этого вам нужен kaminari или will-paginate - похоже, вы можете просто передать параметры, которые ваши пользователи отправляют в ваше приложение, в API, а затем вы передаете информацию, возвращенную из API, через ваш пользователи.
Например, ваши пользователи будут посещать такую страницу, как http://your-application.com/results
. В вашем контроллере вы получите params[:page]
, для которого вам нужно будет по умолчанию установить значение 1, если его нет в URL-адресе.
Затем вы можете сделать запрос к http://some-service.com/page=1
и сохранить общее количество страниц в переменной, например total_pages_available
.
На ваш взгляд, вы можете проверить, больше ли params[:page] 1, и в этом случае вы должны показать «предыдущую» ссылку, которая ссылается на http://your-application.com/results?page=#{params[:page] - 1}
. Вы также можете проверить, меньше ли params[:page] total_pages_available
, и в этом случае вы должны показать «следующую» ссылку, которая ссылается на http://your-application.com/results?page=#{params[:page] + 1}
.
person
carols10cents
schedule
07.09.2013