Overview

Delete Multiple selected items.

Using checkbox

Views

views\xxx\index.html.erb

<% form_tag deletes_xxx_path, :method => :put do %>
  <ul>
  <% for x in @xxx %>
   ( or  <% @xxx.each do |x| %> )
    <li>
      <%= check_box_tag **"xxx_ids[]"**, x.id %>
      <%= task.name %>
    </li>
  <% end %>
  </ul>
  <%= submit_tag "Delete selected" %>
<% end %>

Add confirmation

<%= submit_tag "Delete selected", :confirm => 'Look before you leap.\n Are you sure?'%>

Controller

controllers\xxx_controller.rb

  def deletes
    logger.info "deletes: #{params[:xxx_ids]}"

    _ids = params[:xxx_ids]

    if _ids.nil?
            redirect_to info_logs_url, :notice => "No items selected."
            return
    end

    @xxx = Xxxx.find(_ids)
    @xxx.each do |log|
        logger.info "delete item: #{log.id}"
        log.destroy

        ## Delete the logs
        dir_path = "public/newlogs/#{log.id}"
        logger.info "delete dir: #{dir_path}"
        system("(rm -rf #{dir_path})")
    end

   redirect_to xxxs_url, :notice =>  "Successfully destroy selected logs}"
  end

routes

 map.resources :xxx, :collection => { :deletes => :put }

Checkall and uncheckall

Using getElementsByClassName

1 Add check_box in a class

example: x-select

    <td><%= check_box_tag("xxx_ids[]", xx.id, false, :class=>'x-select') %></td>

2 Add javascript fuction

example: toggleLogsSelection

Where?: in the form: <%= form...... <% end %>

    <script language="javascript" type="text/javascript">

    function toggleLogsSelection(name) {
            var  boxes = document.getElementsByClassName(name);
            var all_checked = true;
            for (i = 0; i < boxes.length; i++) { if (boxes[i].checked == false) { all_checked = false; } }
            for (i = 0; i < boxes.length; i++) {
                    if (all_checked) {
                            boxes[i].checked = false;
                            boxes[i].up('tr').removeClassName('context-menu-selection');
                    } else if (boxes[i].checked == false) {
                            boxes[i].checked = true;
                            boxes[i].up('tr').addClassName('context-menu-selection');
                    }
            }
    }
    </script>

3 Add selectall /unselectall link.

example: x-select

Where?:title bar: ...

      <th scope="col"><%= link_to image_tag('toggle_check.png'), {}, :onclick => "toggleLogsSelection('logs-select'); return false;", :title => "check_all/uncheck_all" %></th>