【发布时间】:2018-09-24 20:30:59
【问题描述】:
您好,我正在做一个 Rails 项目。它是一个从电话簿(索引视图)中选择联系人列表并仅向选定对象发送文本的项目。所以我想在索引视图上引入一个复选框,它选择一些联系人并将这些数据发送到我的控制器。关于如何解决这个问题的任何帮助?
【问题讨论】:
您好,我正在做一个 Rails 项目。它是一个从电话簿(索引视图)中选择联系人列表并仅向选定对象发送文本的项目。所以我想在索引视图上引入一个复选框,它选择一些联系人并将这些数据发送到我的控制器。关于如何解决这个问题的任何帮助?
【问题讨论】:
为复选框使用multiple 选项。
f.check_box :checked, {multiple: true}, value, nil
通过使用多个选项,参数可以具有数组值。您可以将默认值放在第四个参数中,但 nil 很好,只要您不需要任何特定操作。
这个check_box标签可以多次调用,只有被勾选的值才能用params获取。
checked_values = params[:checked]
也许在你的情况下,将联系人ID设置为复选框值,根据该ID从模型中获取记录,并执行以下处理。
编辑:
回应评论,这里是一个例子。
如何在我的索引视图中显示所有这些,包括复选框?
根据设计模式,索引操作将有一个联系人列表。我不理解您的项目,但我认为该项目有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
当然这只是一个例子,请参考这个并在你自己的项目中实现。
【讨论】: