使用复选框从索引视图过滤数据

时间:2018-09-24 07:35:35

标签: ruby-on-rails checkbox

您好,我正在从事Rails项目。它是一个从电话簿(索引视图)中选择联系人列表并将文本仅发送到选定对象的项目。因此,我想在索引视图中引入一个复选框,该复选框选择一些联系人并将此数据发送到我的控制器。我对此有任何帮助吗?

1 个答案:

答案 0 :(得分:0)

对复选框使用multiple选项。

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

通过使用Multiple选项,参数可以具有数组值。您可以将默认值放在第四个参数中,但是只要不需要任何特定操作,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

当然这只是一个示例,请参考并为您自己的项目实施。