views:

662

answers:

1

I want have this ability to select multiple items with checkboxes and delete them in one place this is the code :

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

the checkboxes give me right values, but :

1) how can i give them different id values for html code, all of them have id="product[]" ?

2) how can I delete the checked items in one click ?

3) by the way, whats the meaning of this part : product[]

many thnx

+2  A: 

1: You can create your own Ids by passing them as part of the options hash:

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

For 2 and 3 I'd recommend looking at this Railscast.

Eifion
Thanks for your help, but why we use "product_ids[]" for the name, is this have a reason ?
Datis
The square brackets at the end of the field name cause all values to be placed in an array. So when you do params[:product_ids] it will be an array of all checked fields. If you didn't have the square brackets it would only return one checked value.
ryanb
Thanks for your help :)
Datis