按复选框删除多个项目

dat*_*ign 5 checkbox ruby-on-rails

我希望能够选择带复选框的多个项目,并在一个地方删除它们.

这是代码:

<% @products.each do |p| %>
<%= check_box_tag "product[]" , p.id %>
<div class="product_image">
    <%= image_tag p.photo.url(:thumb) , :alt => "#{p.name}" %>
</div>
<%= link_to "<h3>#{p.name}</h3>" , edit_product_path(p) %>
<div class="product_desc">
    <%=h truncate(p.description.gsub(/<.*?>/,''),80) %>
</div>
<div class="product_price">
    <%=h p.price %>
</div>
<div class="product_categories">
    <% for category in p.categories.find(:all) %>
        <%=h category.name %>
    <% end %>
</div>
<div id="produt_edit_nav">
    <%= link_to 'Show' , product_path(p) %>
    <%= link_to 'Edit', edit_product_path(p) %>
    <%= link_to 'Remove', product_path(p), :confirm => "Are you really want to delete #{p.name} ?", :method => 'delete' %>
</div>
<% end %>
<div id="products_nav">
    <%= link_to "Add a new Product" , new_product_path %>
</div>
Run Code Online (Sandbox Code Playgroud)

复选框为我提供了正确的值,但是:

  1. 如何为html代码提供不同的id值,所有这些都有id="product[]"

  2. 如何一键删除选中的项目?

  3. 此外,这是什么部分的含义:product[]

Eif*_*ion 7

1:您可以通过将它们作为选项哈希的一部分传递来创建自己的ID:

<%= check_box_tag "product_ids[]", product.id, false, :id => "product_#{product.id}" %>
Run Code Online (Sandbox Code Playgroud)

对于2和3我建议看看这个Railscast.

  • 字段名称末尾的方括号使所有值都放在一个数组中.因此,当你执行params [:product_ids]时,它将是所有已检查字段的数组.如果您没有方括号,则只返回一个选中的值. (2认同)