Помогите реализовать пагинацию.
Есть каталог элементов, в нём есть поиск с различными параметрами, все параметры поиска передаются в 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) изменить отдельный параметр в строке запроса, или добавить его, если он не указан вовсе?