Фильтр на основе множественного выбора в Ruby - PullRequest
0 голосов
/ 12 июня 2018

Как отфильтровать таблицу пользователей, используя множественный выбор?Я попытался изменить его только на один выбор, и фильтр работает, и он правильно выполняет SQL, но я хочу изменить его на множественный выбор.Я пробовал, и фильтр не работает.Как я могу это сделать?
У меня есть это в моей форме:

<%= f.label :department_id %><br>
<%= f.select :department_id, Department.all.map { |d| [d.name, d.id] }, {include_blank: true}, multiple: true %>

После того, как форма была отправлена, она выполняет функцию в своей модели.Это фрагмент кода, который сделал одиночный выбор работающим, но он не будет работать в множественном выборе: users = User.where(["users.department_id = ?", department_id]) if department_id.present?.Как я могу заставить его работать с множественным выбором?

Редактировать: я заметил, что он ничего не возвращает, когда это множественный выбор.Как я могу это исправить?

1 Ответ

0 голосов
/ 12 июня 2018

Аналогичный подход даже для множественного выбора.

Допустим, вы хотите фильтровать, используя отдел и местоположение:

<%= f.label :department_id %><br>
<%= f.select :department_id, Department.all.map { |d| [d.name, d.id] }, {include_blank: true}, multiple: true %>
<%= f.label :location_id %><br>
<%= f.select :location_id, Location.all.map { |d| [d.name, d.id] }, {include_blank: true}, multiple: true %>

Измените функцию в вашей модели, чтобы иметь следующий контент:

@users = User.where(["department_id = ?", department_id]) if department_id.present?
@users = @users.where(["location_id = ?", location_id]) if location_id.present?

В приведенном выше фильтре первой строки используется отдел.Во второй строке он фильтрует уже отфильтрованных пользователей по местоположению.

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