Фильтрация данных из представления индекса с помощью флажка - PullRequest
0 голосов
/ 24 сентября 2018

Здравствуйте, я работаю над проектом рельсов.Это проект, который выбирает список контактов из телефонной книги (индексный просмотр) и отправляет текст только выбранным.Поэтому я хотел бы установить флажок в представлении индекса, который выбирает несколько контактов и отправляет эти данные моему контроллеру.Любая помощь о том, как я могу пойти по этому поводу?

1 Ответ

0 голосов
/ 24 сентября 2018

Используйте параметр multiple для check_box.

f.check_box :checked, {multiple: true}, value, nil

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

Этот тег check_box можно вызывать много раз, только проверенное значение может быть получено с помощьюparams.

checked_values = params[:checked]

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

Редактировать:

В ответ на комментарий приведем пример.

Как отобразить все из них, включая флажок в моем представлении индекса?

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

def index 
  @contacts = Contact.limit(20) 
end

Затем, просмотрите представление индекса с помощью @contacts и check_box.

<%= form_for :contacts, url: {action: :send}, html: {method: :post} do |f| %>
  <% @contacts.each do |contact| %>
    <div>
      <%= f.check_box :checked, {multiple: true}, contact.id, nil %>
      <%= "name: #{contact.name}, phonenumber: #{contact.phonenumber}" %>
    </div>
  <% end %>

  <%= f.submit 'Submit' %>
<% end %>

Так какпредполагается, что эта форма отправляет данные в действие send, send будет реализовано следующим образом.

def send
  # fetch checked id and find record from model
  checked_ids = params[:contacts][:checked]
  contacts = Contact.where(id: checked_ids)

  # add your code
end

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

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