Rails: фильтрация путем добавления / удаления параметров строки запроса - PullRequest
0 голосов
/ 08 февраля 2011

Я написал следующий код для создания пользовательского интерфейса, который позволяет добавлять и удалять фильтры из строки запроса:

<% @colours.each do |colour| %>
  <% if params[:colour].include?(colour) %>
    <% # Already being filtered. Show remove link. %>
    <% modified_params = params.dup %>
    <% modified_params[:colour].delete_if {|v| v == colour } %>
    <%= link_to "Remove #{colour}", modified_params %>
  <% else %>
    <% # Not being filtered. Show add link. %>
    <%= link_to "Add #{colour}", params.merge('colour[]' => colour) %>
  <% end %>
<% end %>

При нажатии на ссылку «Добавить» фильтр добавляется в строку запроса; щелчок по ссылке «Удалить» находит и удаляет фильтр из строки запроса.

Это отлично работает, но все выглядит довольно грязно для меня. Я ищу предложения по улучшению этого кода. Возможно, есть лучший способ достигнуть этого вообще, или возможно драгоценный камень, который я пропустил.

Любые отзывы приветствуются, так как я относительно новичок в Ruby и Rails.

Большое спасибо.

Обновление

Просто для пояснения, пример строки запроса может быть следующим:
?colour[]=Red&colour[]=Green&colour[]=Blue&size[]=Very+small&size[]=Small

Каждая ссылка фильтра должна продолжать сохранять другие параметры, присутствующие в строке запроса.

1 Ответ

1 голос
/ 08 февраля 2011

Я бы сделал вспомогательный метод, может быть, "get_colour_link", и передал бы ваши цвета и параметры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...