Rails 5.2 数据表不会在页面更改时刷新数据

Posted

技术标签:

【中文标题】Rails 5.2 数据表不会在页面更改时刷新数据【英文标题】:Rails 5.2 Datatables will not Refresh Data on Page Change 【发布时间】:2019-09-19 10:31:18 【问题描述】:

我有一个配置了数据表的 rails 5.2 项目。该插件工作正常,但如果我更改页面然后点击后退按钮,表中的数据不会再次使用数据表加载。它说“表中没有数据”。对我来说,这听起来像是一个 turbolinks 问题。

我正在使用以下内容来生成表格:

$( document ).on('turbolinks:load', function() 
  $("#prjtbl").dataTable();
);

数据表插件在页面更改之间加载,但表中的数据不刷新。有关如何解决此问题的任何想法?

更新:Application.js

        // This is a manifest file that'll be compiled into application.js, which will include all the files
    // listed below.
    //
    // Any javascript/Coffee file within this directory, lib/assets/javascripts, or any plugin's
    // vendor/assets/javascripts directory can be referenced here using a relative path.
    //
    // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
    // compiled file. JavaScript code in this file should be added after the last require_* statement.
    //
    // Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
    // about supported directives.
    //
    //= require rails-ujs
    //= require jquery
    //= require datatables
    //= require popper
    //= require bootstrap-sprockets
    //= require shards-dashboards
    //= require trix
    //= require activestorage
    //= require turbolinks
    //= require_tree .

Page.js

    JQuery(function() 
      $( document ).on('turbolinks:load', function() 
        $("#prjtbl").dataTable();
      );
    );

【问题讨论】:

【参考方案1】:
document.addEventListener("turbolinks:load", function() 
  "use strict";
  if ($("#prjtbl").length == 0) 
    $("#prjtbl").dataTable();
  
)

【讨论】:

谢谢。当我尝试它停止加载数据表插件时。该代码应该放在哪里?我目前在我的 page.js 文件中有它。 向我们展示您的 page.js 文件和您的 application.js 文件 用额外的文件更新了主帖。 也许可以尝试将 //= require turbolinks 重新排序到 application.js 中,方法是将其放在 //= require jquery 的正下方。加载顺序在 Rails 的 JS 中非常重要。 相同的结果。当我在 turbolinks:load 周围使用 JQuery(function() 时,插件不会加载。删除会导致数据表加载,但在刷新页面之前它不会刷新页面更改之间的数据。

以上是关于Rails 5.2 数据表不会在页面更改时刷新数据的主要内容,如果未能解决你的问题,请参考以下文章

Rails 页面在每次刷新时更改翻译

Rails 页面仅在刷新后应用

VueJS - V-for 在数据更新后不会重新渲染,需要刷新页面才能看到更改

在 ruby​​ rails html 视图中使用 Ajax 表单更改图标“like”按钮类

Rails设计不会重定向到根路径

Rails 6. 浏览器打开后显示一个带有过期数据的页面