rails 4.2 DataTables无法重新初始化DataTable

Posted

技术标签:

【中文标题】rails 4.2 DataTables无法重新初始化DataTable【英文标题】:rails 4.2 DataTables Cannot reinitialise DataTable 【发布时间】:2015-05-30 12:13:16 【问题描述】:

我知道这方面有一些线索,我一直在尝试不同的解决方案。

我有一个使用 DataTables gem 的非常简单的 1 页 rails 4 应用程序,当我加载页面时出现重新初始化错误 " DataTables 警告:table id=pivotal - 无法重新初始化 DataTable。有关此错误的更多信息,请参阅http://datatables.net/tn/3 "

在我的咖啡脚本中,如果我有这一行,它可以正常工作

jQuery ->
  $('#pivotal').dataTable

添加一个选项行,我得到了错误。我添加什么都没关系。该表只加载弹出错误。

jQuery ->
  $('#pivotal').dataTable
    bJQueryUI: true
    pagingType: "simple"

应用程序 JS

// Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details
// about supported directives.
//
//= require jquery
//= require jquery_ujs
//= require dataTables/jquery.dataTables
//= require_tree .

应用程序 CSS

/*
 * This is a manifest file that'll automatically include all the stylesheets available in this directory
 * and any sub-directories. You're free to add application-wide styles to this file and they'll appear at
 * the top of the compiled file, but it's generally better to create a new file per style scope.
 *= require_self
 *= require jquery-ui
 *= require dataTables/src/demo_table_jui
 *= require_tree . 
*/

宝石文件

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.2.0'
# Use sqlite3 as the database for Active Record
gem 'sqlite3'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0'
# Use Uglifier as compressor for javascript assets
gem 'uglifier', '>= 1.3.0'
# Use CoffeeScript for .coffee assets and views
gem 'coffee-rails', '~> 4.1.0'

# Use jquery as the JavaScript library
gem 'jquery-rails'
# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
gem 'turbolinks'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.0'
# bundle exec rake doc:rails generates the API under doc/api.
gem 'sdoc', '~> 0.4.0', group: :doc
gem 'tracker_api', '~> 0.2.7'

查看

<table id="pivotal">  
  <thead>
    <tr>
      <th>Story Name</th>
      <th>Story Date Created</th>
    </tr>
  </thead>
 <tbody>
            <% @piv.each do |story| %>

            <tr>
            <td><%= story.name %>  </td>
            <td><%= story.created_at.strftime("%F") %>  </td>
            </tr>

            <% end %>
        </tbody>
</table>

【问题讨论】:

您是否尝试添加retrieve: true 选项? 代码中有两个jQuery -&gt; $('#pivotal').dataTable 实例。 我只有 1 个咖啡脚本,其中有 1 行,我在哪里可以找到它的多个副本? 你能解决这个问题吗? @ducati1212 【参考方案1】:

您需要将bDestroy : true 添加到datatable 选项,如下所示 jQuery ->

$('#pivotal').dataTable
  bJQueryUI: true
  pagingType: "simple"
  bDestroy: true

【讨论】:

以上是关于rails 4.2 DataTables无法重新初始化DataTable的主要内容,如果未能解决你的问题,请参考以下文章

为啥我使用 Datatables 的 Rails 应用程序在我使用后退按钮时无法正确绘制表格,但在我刷新页面时却如此?

jQuery DataTables 行重新排序和 CoffeeScript

Docker - Rails Development Auto Reload Broken (Rails 4.2) Mac NFS

DataTables 警告:table id=DataTables_Table_1 - 无法重新初始化 DataTable。不工作

无法将凉亭组件 css 添加到 Rails 4.2 中的资产管道中

找不到文件'dataTables/jquery.dataTables' Rails 4