【问题标题】:Delete multiple item by checkbox通过复选框删除多个项目
【发布时间】:2010-11-20 17:39:28
【问题描述】:

我希望能够使用复选框选择多个项目并将它们删除到一个地方。

这是代码:

<% @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>

复选框给了我正确的值,但是:

  1. 如何给他们不同的 html 代码 id 值,他们都有id="product[]"

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

  3. 还有,这部分是什么意思:product[]?

【问题讨论】:

    标签: ruby-on-rails checkbox


    【解决方案1】:

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

    <%= check_box_tag "product_ids[]", product.id, false, :id => "product_#{product.id}" %>
    

    对于 2 和 3,我建议查看 this Railscast

    【讨论】:

    • 感谢您的帮助,但为什么我们使用“product_ids[]”作为名称,这是有原因的吗?
    • 字段名称末尾的方括号将所有值放入数组中。因此,当您执行 params[:product_ids] 时,它将是所有已检查字段的数组。如果你没有方括号,它只会返回一个检查值。
    猜你喜欢
    • 2013-11-21
    • 1970-01-01
    • 2014-08-05
    • 1970-01-01
    • 2015-02-21
    • 2013-08-13
    • 1970-01-01
    • 1970-01-01
    • 2014-09-18
    相关资源
    最近更新 更多