在我的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
答案 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