2009-08-18 46 views
5

我希望能夠用複選框選擇多個項目並在一個地方刪除它們。通過複選框刪除多個項目

這是代碼:

<% @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. 我怎麼可以給他們不同的ID值的HTML代碼,所有的人都id="product[]"

  2. 如何在一次點擊中刪除選中的項目?

  3. 另外,這部分是什麼意思:product[]

回答

7

1:您可以將它們作爲選項散列的一部分,創建自己的標識:

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

對於2和3,我建議在看this Railscast

+0

感謝您的幫助,但爲什麼我們使用「product_ids []」作爲名稱,這是有原因的嗎? – datisdesign 2009-08-18 20:33:55

+2

字段名稱末尾的方括號會將所有值放入數組中。所以當你做params [:product_ids]時,它將是所有選中字段的數組。如果您沒有方括號,它只會返回一個選中的值。 – ryanb 2009-08-18 21:47:02

+0

感謝您的幫助:) – datisdesign 2009-08-18 21:53:46

相關問題