Сменить параметр в ссылке, какой путь подскажете?

Помогите реализовать пагинацию.

Есть каталог элементов, в нём есть поиск с различными параметрами, все параметры поиска передаются в GET запросе. Сервер обрабатывает запрос и выводит соответствующие запросу элементы.

Элементов может быть много и более разумно сделать постраничный вывод, порциями (пагинация).

Вот пример запроса поиска:
http://localhost:4567/catalog?search[][key]=authors&search[][condition]=like&search[][value]=%D0%BF%D1%80&search[][key]=publication_date&search[][condition]=like&search[][value]=2009&search[][key]=none&search[][condition]=eql&search[][value]=&search[][key]=none&search[][condition]=eql&search[][value]=&search[][key]=none&search[][condition]=eql&search[][value]=&sort=title&limit=25&view=grid&invert=0&offset=50


Параметром offset (в примере он последний) задаётся смещение стартового индекса.

Теперь мне нужно сделать так, чтобы в виджете пагинации в ссылках на страницы был тот же адрес с параметрами поиска, но с изменённым соответственно параметром offset

...&offset=0&... - первая страница
...&offset=25&... - вторая страница
...&offset=50&... - третья страница
итд

Как в Sinatra (ruby) изменить отдельный параметр в строке запроса, или добавить его, если он не указан вовсе?
  • Вопрос задан
  • 209 просмотров
Решения вопроса 1
@ascrazy
  • Распарсить сам url используя URI.parse и извлечь из него query фрагмент.
  • Распарсить query с помощью Rack::Utils.parse_query
  • В полученном хеше заменить или добавить нужные параметры, и собрать из него query используя Rack::Utils.build_query, после чего заменить query у объекта URI, полученного на первом шаге, новым query
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы