0

Rails アプリで DataTables を使用しています。

何らかの理由で、DataTables/JQuery は、DataTable を再初期化しようとしていると考えているようです。DataTables を使用するページを読み込むたびに、次のエラーが発生します。

DataTables warning (table id = 'DataTables_Table_0'): Cannot reinitialise DataTable.
To retrieve the DataTables object for this table, pass no arguments or see the docs for bRetrieve and bDestroy

なぜこうなった?私のページは、私が見る限りスクリプトを 1 回だけロードし、ページごとに 1 つのテーブル要素しか生成しないことを知っています...

/application/views/layouts/application.html.haml :

!!!
%html
  %head
    = javascript_include_tag "application"
  %body
    = yield

/application/views/reports/index.html.haml :

%table
  %thead
    %tr
      %th Short Name
      %th Controls
  %tbody
    - @reports.each do |report|
      %tr
        %td= link_to report.full_name, report_path(report)
        %td
          = link_to "Edit", edit_report_path(report)
          \|
          = delete_link "Delete", report_path(report)

アセット パイプラインを正しく設定したと確信しています...

/assets/javascripts/application.js :

//= require jquery
//= require jquery_ujs
//= require dataTables/jquery.dataTables
//= require html5shiv
//= require_tree .

そして、DataTablesを正しく呼び出していると確信しています...

/assets/javascripts/tables.js.coffee :

jQuery ->
  $('table').dataTable
    sPaginationType: "full_numbers"
    bJQueryUI: true

そして、私の宝石が動作を引き起こしているとは思わない:

Gemfile :

source "http://rubygems.org"

gem "rails", "3.2.11"
gem "activesupport"
gem "actionmailer"
gem "mail"
gem "railties"
gem "compass"
gem "pg"
gem "sass"
gem "sass-rails"
gem "haml"
gem "haml-rails"
gem "susy"
gem "jquery-rails"
gem "google-analytics-rails"
gem "declarative_authorization"
gem "authlogic"
gem "simple_form"
gem "country-select"
gem "rails3-generators"
gem "hirb"
gem "debugger"
gem "redis"
gem "RedCloth"
gem "friendly_id"
gem "high_voltage"
gem "validatious"
gem "houdini"
gem "rspec-rerun"
gem "html5shiv-rails"
gem "normalize-rails"
gem "simple-navigation"
gem "thin"

group :development do
  gem "taps"
  gem "better_errors"
  gem "binding_of_caller"
end

group :test do
  gem "capybara"
  gem "rspec-rails"
  gem "database_cleaner"
  gem "launchy"
  gem "spork", "0.9.2"
  gem "respec"
end

group :assets do
  gem "better_errors"
  gem "sass-rails"
  gem "coffee-rails"
  gem "compass-rails"
  gem "compass-susy-plugin"
  gem "fancy-buttons"
  gem 'jquery-datatables-rails', github: 'rweng/jquery-datatables-rails'
  gem "jquery-ui-rails"
  gem "uglifier"
end

更新:これはアセットパイプラインと関係があることを知っています.Heroku(後rake assets:precompile)で本番環境にある同じコードは、開発時にここで引き起こしている問題を引き起こしていないためです(アプリがオンザフライで私のためにアセットを組み立てる場所) .)

4

2 に答える 2

0

以下のように整理してみてください

$('selector').dataTable({...});

1.ほとんどの場合、セレクターの代わりに ID を使用する必要があります。

  1. 実際の懸念事項は、重複する ID を使用しないこと、またはクラスをセレクターとして使用している場合は、そのクラスを複数の要素に使用しないことです (面倒に聞こえます)。そのため、セレクターを ID として使用することをお勧めします (ID は要素)
于 2015-03-12T07:05:05.523 に答える