我正在使用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
});
答案 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以获取代码和演示。