Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 从js.haml调用自定义javascript函数_Jquery_Ajax_Ruby On Rails 4 - Fatal编程技术网

Jquery 从js.haml调用自定义javascript函数

Jquery 从js.haml调用自定义javascript函数,jquery,ajax,ruby-on-rails-4,Jquery,Ajax,Ruby On Rails 4,我已经定义了一个javascript函数,用于使用dataTables操作表。我为表提供了自定义列定义,如下所示 setTableStyle = -> columnDefs = [ { "bSearchable": true, "bVisible": true, "aTargets": [ 0, 1, 2, 3 ] }, { "bSortable": false, "bSearchable": false, "bVisible": true, "aTargets": [ 4 ] }

我已经定义了一个javascript函数,用于使用dataTables操作表。我为表提供了自定义列定义,如下所示

setTableStyle = -> 
  columnDefs = [ { "bSearchable": true, "bVisible": true, "aTargets": [ 0, 1, 2, 3 ] }, { "bSortable": false, "bSearchable": false, "bVisible": true, "aTargets": [ 4 ] } ]

  $('#agents_list, #search_list').dataTable
    'bFilter': false
    'bAutoWidth': false
    'aaSorting': [[ 3, 'desc' ]]
    'bPaginate': false
    'aoColumnDefs': columnDefs
我正在使用“fnDraw”在js.haml文件中重新绘制表,以ajax轮询Agent n中的更改。js.haml代码如下

$('#agents_list').replaceWith("#{escape_javascript(render partial: 'agents_table', locals: {agents: @agents, id: 'agents_list'})}");
var columnDefs = [{"bSearchable": true, "bVisible": true, "aTargets": [0, 1, 2, 3] }, {"bSortable": false,"bSearchable": false, "bVisible": true, "aTargets": [4]}];
var oTable = $('#agents_list').dataTable({ 'bFilter': false, 'bAutoWidth': false, 'aaSorting': [[3, 'desc']], 'bPaginate': false, 'aoColumnDefs': columnDefs});
oTable.fnDraw();
@setTableStyles ->
  #code goes here.

我无法从js.haml调用“setTableStyle”,因此我必须重复代码。如何避免这种情况?

在controller\u name.js.coffee文件中将函数声明为全局函数。coffeescript代码如下所示

$('#agents_list').replaceWith("#{escape_javascript(render partial: 'agents_table', locals: {agents: @agents, id: 'agents_list'})}");
var columnDefs = [{"bSearchable": true, "bVisible": true, "aTargets": [0, 1, 2, 3] }, {"bSortable": false,"bSearchable": false, "bVisible": true, "aTargets": [4]}];
var oTable = $('#agents_list').dataTable({ 'bFilter': false, 'bAutoWidth': false, 'aaSorting': [[3, 'desc']], 'bPaginate': false, 'aoColumnDefs': columnDefs});
oTable.fnDraw();
@setTableStyles ->
  #code goes here.
这个函数可以在任何地方调用。在js.haml中

setTableStyles();