如何在ruby on rails中使用dataTable时每行添加复选框



我正在我的ruby on rails应用程序中使用DataTables。它与桌面工具配合使用也很好。但我想在数据表中的每行也添加复选框来执行批处理操作。我在官方网站上搜索了所有的例子,但找不到复选框。

我想在数据表中执行批量删除操作。

有人能建议我在数据表中添加复选框吗??

我不确定dataTables是否提供直接删除机制。但这就是我在普通铁路上所做的。让我们以产品为例。在你的视图文件中有这样的东西:

<%= form_for('Product', :as => 'products', :url => delete_selected_products_path) do |f| %>
  <%= f.button :submit, 'Delete Selected', :class => 'btn-danger product' %>
  <div class="clear">&nbsp;</div>
  <table>
    <thead>
      <tr>
        <th class="select-row"></th
        <th>Product Name</th>
        <th>Description</th>
        <th>Price</th>
        <th class="actions"></th>
      </tr>
    </thead>
    <tbody>
      <% @products.each do |product| %>
        <tr>
          <td class="first-column"><%= check_box_tag 'ids[]', product.id, false, :class => 'table-row-checkbox' %></td>
          <td><%= product.name %></td>
          <td><%= product.description %></td>
          <td><%= product.price %></td>
          <td><%= link_to "View & Edit", product_path(product) %></td>
        </tr>
      <% end %>
    </tbody>
  </table>
<% end %>

并且在产品控制器中将delete_selected操作定义为

def delete_selected
  params[:ids].each do |id|
    product = Product.find(id)
    product.destroy
  end unless params[:ids].blank?
  redirect_to products_path, :notice => 'Selected products are deleted successfully!'
end

并在您的routes.rb中添加delete_selected作为产品资源的集合:

resources :products do
  post :delete_selected, :on => :collection
end

如果你愿意,你可以使用AJAX。:)

Datatables.net提供了两种删除方法。

1) [tableObject].fnDeleteRow([rowToDelete])-一次删除一行

2) [tableObject].fnClearTable()-清除整个表

如果你使用AJAX源代码,那么你会使用:

var oTable = ("#MyTable").datatables({
    "aoColumnDefs" : [
        {
            "fnRender" : function(oObj, sVal){
                //oObj.aData[columnIndex] will get the value for the column
                //sVal is the value of the column being updated
                return sVal + "<input type='check'>";
            }, 
        "aTargets" : [ColumnIndexToTarget]}
     ]});
function OnDeleteButtonClick(){
    $.each(oTable.$("tr").filter("input:checked"), function(index, data){
        oTable.fnDeleteRow(data);
    });
}

相关内容

  • 没有找到相关文章

最新更新