Я с трудом добавляю параметры строки запроса в link_to UrlHelper. Например, у меня есть индексное представление, в котором есть элементы пользовательского интерфейса для сортировки, фильтрации и разбиения на страницы (через will_paginate). Плагин will_paginate правильно управляет внутристраничным постоянством параметров строки запроса.
Существует ли автоматический механизм добавления параметров строки запроса в заданный маршрут или мне нужно делать это вручную? Множество исследований этой, казалось бы, простой конструкции оставило меня в неведении.
редактировать
Некоторые из проблем:
Если у меня есть два параметра строки запроса, bucket и sorting, как установить конкретное значение для одного из них в link_to, сохраняя при этом текущее значение другого? Например:
<%= link_to "0", profiles_path(:bucket => '0', :sorting=>?? ) %>
Если у меня есть несколько параметров строки запроса, bucket & sorting & page_size, и я хочу установить значение для одного из них, есть ли способ «автоматически» включать имена и значения оставшихся параметров? Например:
<%= link_to "0", profiles_path(:bucket => '0', [include sorting and page_size name/values here] ) %>
Плагин will_paginate автоматически управляет своей переменной страницы и другими переменными строки запроса. Кажется, не существует автоматического элемента пользовательского интерфейса для управления размером страницы. Хотя я видел код для создания списка выбора размеров страниц, я бы предпочел для этого элементы A (например, SO). Часть этой проблемы связана с # 2, часть связана с сокрытием / показом этого элемента пользовательского интерфейса, основанного на существовании / несуществовании записей. Иными словами, я хочу включить ссылки размером с страницу только при наличии записей на странице. Более того, я предпочитаю автоматически включать другие переменные QS (например, page, bucket, sorting), а не включать их по имени в link_to.
Ответы:
Документы API на link_to показывают некоторые примеры добавления строк запросов как к именованным, так и к старым маршрутам. Это то, что вы хотите?
link_to
также может создавать ссылки с помощью якорей или строк запроса:источник
Если вы хотите быстрый и грязный способ и не беспокоиться о XSS-атаке, используйте
params.merge
для сохранения предыдущих параметров. напримерсм .: https://stackoverflow.com/a/4174493/445908
В противном случае, проверьте этот ответ: params.merge и межсайтовый скриптинг
источник
Если вы хотите сохранить существующие параметры и не подвергать себя атакам XSS, обязательно очистите хэш параметров, оставив только те параметры, которые может отправлять ваше приложение:
Если вы используете его в нескольких местах, очистите параметры в контроллере:
источник
В случае, если вы хотите передать блок, скажем, для кнопки глификона, как показано ниже:
Тогда передача параметров строки запроса может быть выполнена через:
источник