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

时间:2013-08-23 06:30:10

标签: 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 ] } ]

  $('#agents_list, #search_list').dataTable
    'bFilter': false
    'bAutoWidth': false
    'aaSorting': [[ 3, 'desc' ]]
    'bPaginate': false
    'aoColumnDefs': columnDefs

我使用'fnDraw'重新绘制js.haml文件中的表,对代理n的更改进行ajax轮询。 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();

我不能从js.haml调用'setTableStyle',因此我必须重复代码。我该如何避免这种情况?

1 个答案:

答案 0 :(得分:0)

在controller_name.js.coffee文件中将该函数声明为global。 coffeescript代码为

@setTableStyles ->
  #code goes here.

可以从任何地方调用此函数。在js.haml做

setTableStyles();