数据表和使用过滤器

时间:2015-10-06 16:58:43

标签: jquery datatables

我正在使用jQuery DataTables并希望按切换按钮按组进行过滤。

目前,我的表格显示了属于当前用户的工具,但我希望他们能够搜索其他群组'工具也是如此。

例如。用户1属于组1.表默认显示所有组1工具。但是当他们点击"第2组"时,我希望表格更新以显示所有第2组工具。

目前,这适用于POST参数:

  def my_search
    if params[:search][:value].present?
      records = Tool.full_text_search(params[:search][:value])
    elsif params[:group]
      records = Tool.where(group: params[:group])
    else
      records = Tool.where(group: current_user.group)
    end
  end 

这是与我的rails函数一起使用的jQuery:

var toolTable = $('#tools-table').DataTable({
  "ajax": {
    'url':'/tools.json',
    'data': {
      group: function () {
        return group;
      }
    }
  },
  "columns": [
    {data: '0'},
    {data: '1'},
    {data: '2'},
    {data: '3'},
    {data: '4'},
    {data: '5'}
  ],
  'columnDefs': [{
    'orderable': false,
    'targets': ['nosort']
  }],
  // autoWidth: false,
  // pagingType: 'full_numbers',
  processing: true,
  serverSide: true,
  "bPaginate": true,
  "bLengthChange": false,
  "bFilter": true,
  "bInfo": false,
  "bAutoWidth": false

});

1 个答案:

答案 0 :(得分:0)

  

<强>解

您可以使用ajax.data选项添加要发送到服务器的其他参数,这将是您的组ID。

$('#example').DataTable({
    "ajax": {
        "url": "/test/0",
        "data": function(d){            
            d.form_group = $('#example-group').val();
        }
    }
});

// Handle filter change event
$('#example-group').on('change', function(){
    // Reload table data from Ajax data source
    $('#example').DataTable().ajax.reload(); 
});

您需要在服务器上处理此参数(在我的示例中为form_group)并返回相应的数据。

  

<强>样本

请参阅this jsFiddle以获取代码和演示。