Используйте параметр 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
Конечно, это всего лишь пример, пожалуйста, обратитесь к нему и реализуйте для своего собственного проекта.