【问题标题】:Filter data from index view using checkbox使用复选框从索引视图中过滤数据
【发布时间】:2018-09-24 20:30:59
【问题描述】:

您好,我正在做一个 Rails 项目。它是一个从电话簿(索引视图)中选择联系人列表并仅向选定对象发送文本的项目。所以我想在索引视图上引入一个复选框,它选择一些联系人并将这些数据发送到我的控制器。关于如何解决这个问题的任何帮助?

【问题讨论】:

    标签: ruby-on-rails checkbox


    【解决方案1】:

    为复选框使用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
    

    当然这只是一个例子,请参考这个并在你自己的项目中实现。

    【讨论】:

    • 是的,这是有道理的,但这意味着我必须在索引视图中使用表单,对吗?例如,我在表单中有列:姓名和电话号码?如何在我的索引视图中显示所有这些列,包括复选框?
    • @Getty Orawa,添加了与您的评论相对应的示例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-06
    • 2019-01-04
    • 2015-06-21
    • 1970-01-01
    • 2015-04-27
    • 2019-04-28
    • 1970-01-01
    相关资源
    最近更新 更多