DataTables仅在页面刷新时加载

时间:2015-06-16 19:24:00

标签: jquery ruby-on-rails coffeescript datatables

在我的Rails 4应用程序中,如果我从另一个URL访问带有DataTable的页面,它只加载纯HTML表。但是,如果我重新加载页面,DataTable会出现并正常运行。这是我用来运行桌子的咖啡因。

应用/资产/ JavaScript的/ employees.coffee

jQuery ->

  $('#margin-table1').dataTable().fnDestroy() # prevent duplication error
  $('#margin-table1').dataTable
    'dom' : 'TC<"clear">lftip'
    'bPaginate' : false
    'bInfo' : false
    tableTools: {
      "sSwfPath": "/copy_csv_xls_pdf.swf"
    }

应用/资产/ JavaScript的/的application.js

//= require bootstrap
//= require jquery
//= require jquery_ujs
//= require dataTables/jquery.dataTables
//= require dataTables/bootstrap/3/jquery.dataTables.bootstrap
//= require dataTables.colVis
//= require dataTables.tableTools
//= require jquery.purr
//= require dataTables/jquery.dataTables
//= require chartkick
//= require_tree .

应用/资产/样式表/ application.css

*= require_tree .
*= require dataTables/bootstrap/3/jquery.dataTables.bootstrap
*= require dataTables/extras/dataTables.colVis
*= require dataTables/extras/dataTables.tableTools
*= require_self

2 个答案:

答案 0 :(得分:4)

好的,我认为我理解你的问题足以提供答案。关于使用turbolinks的事情是,大多数绑定到文档就绪事件的插件和库都停止工作,因为turbolink会阻止浏览器重新加载页面。有一些技巧可以解决这些问题,但最简单的解决方法是使用jquery.turbolinks

要使用它,只需将其添加到Gemfile

即可
gem 'jquery-turbolinks'

这是您的assets/javascripts/application.js文件:

//= require jquery.turbolinks

然后重新启动服务器,它将正常运行。

答案 1 :(得分:1)

如果在DOM加载时调用.DataTable方法,而不是:

'$["functions"]["create"]["events"][0]["http"]["cors"]'

使用以下命令等待turbolink完成加载(第5条)

custom:
  cors:
    origin: '*' # <-- Specify allowed origin
    headers: # <-- Specify allowed headers
      - Content-Type
      - X-Amz-Date
      - Authorization
      - X-Api-Key
      - X-Amz-Security-Token
      - X-Amz-User-Agent
      - TZ
    allowCredentials: false