Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails-通过参数传递多个复选框值_Ruby On Rails_Checkbox_Simple Form_Params - Fatal编程技术网

Ruby on rails Rails-通过参数传递多个复选框值

Ruby on rails Rails-通过参数传递多个复选框值,ruby-on-rails,checkbox,simple-form,params,Ruby On Rails,Checkbox,Simple Form,Params,我使用gem进行实时过滤。 下面是一个没有提交和url的简单表单 <%= smart_listing_controls_for(:search) do %> <%= simple_form_for :search do |f| %> <%= f.input :certificates, collection: Certificate.all, :as => :check_boxes, include_hidden: false, :input_ht

我使用gem进行实时过滤。 下面是一个没有提交和url的简单表单

<%= smart_listing_controls_for(:search) do %>
  <%= simple_form_for :search do |f| %>
    <%= f.input :certificates, collection: Certificate.all, :as => :check_boxes, include_hidden: false, :input_html => {:multiple => true} %>
  <% end>
<% end>
问题是,当我选中多个复选框时,证书数组只具有最新的值,而不是所有选中的复选框值

此外,选中和取消选中复选框时,参数中的证书数组值保持不变。如果取消选中该复选框,我希望从参数中的证书数组中删除该值,并且只希望证书数组仅包含所有选中的复选框值

以下是为多个复选框之一生成的html代码

<span class="checkbox">
  <label for="search_certificates_5">
    <input class="check_boxes required" type="checkbox" value="5" name="search[certificates][]" id="search_certificates_5">
     Certificate 1
  </label>
</span>

证书1

提前感谢:)

由于的
智能列表控件和
简单表单控件都用于创建表单,您可能遇到的一个问题是,您正在表单中创建表单,这既不是推荐的,也不是标准的。这可能会导致意想不到的结果

也许可以尝试在没有简单表单帮助程序的情况下执行此操作,类似这样的操作(假设
证书
具有description属性):


bundle在更新Gemfile后安装
,然后重试上述代码。

感谢Rodrigo的回答。但它不起作用。和以前一样的问题。证书数组中只有一个值。以下是删除简单表单
参数后的参数:{“utf8”=>“✓", "搜索智能列表“=>{”=>“1”,“页面”=>,“每页”=>“10”},“搜索”=>{“证书”=>[“6”]}
@Mahendhar我已经更新了我的答案。您仍然应该使用1表单,但当前版本也存在问题。检查我的答案。@Mahendhar嘿,我正试图完成一些类似的事情,每个复选框在被选中时都会被过滤掉。当前,一旦我取消选中复选框,我的复选框将不会取消筛选,并且如果我选中了多个复选框,它将不会显示所有选中复选框的输出。你能把我引向右边吗。谢谢@蒂姆:这一切都取决于你如何在你的控制器上过滤。请记住,表单提交时不会发送未选中的复选框(只有选中的复选框才会发送),因此您必须记住这一点,以便进行正确的筛选。@Tim,这是我在视图中的多个复选框代码
<span class="checkbox">
  <label for="search_certificates_5">
    <input class="check_boxes required" type="checkbox" value="5" name="search[certificates][]" id="search_certificates_5">
     Certificate 1
  </label>
</span>
<%= smart_listing_controls_for(:search) do %>
  <%= Certificate.all.each do |certificate| %>
    <div class="checkbox">
      <label class= "checkbox inline">
        <%= check_box_tag 'search[certificates][]', certificate.id %>
        <%= certificate.description %>
      </label>
    </div>
  <% end %>
<% end %>
gem 'smart_listing', :git => 'https://github.com/Sology/smart_listing.git', :ref => '79adeba'