Rails、pjax 和数据表

Posted

技术标签:

【中文标题】Rails、pjax 和数据表【英文标题】:Rails, pjax and DataTables 【发布时间】:2012-10-23 04:09:14 【问题描述】:

我有一个使用 pjax (pjax.heroku.com/) 的 Rails 应用程序,因此我的标题和导航栏永远不会重新加载。这一切都很好,花花公子和工作,但在我的一个观点中,我正在使用数据表(datatables.net)。当您第一次加载页面时,数据表运行良好,但如果您导航到另一个页面然后返回,该表不会“重新启动”,因此它不起作用,一切看起来都像废话。显然是因为pjax导致数据表js文件没有再次加载。

这是我得到的:

application.js:

//= require jquery
//= require jquery_ujs
//= require pjax
//= require_tree .

application.html.erb的头上我有:

<%= javascript_include_tag "application" %>

然后用data-pjax-container&lt;%= yield %&gt; 包裹在一个div 中。

我正在调用表格下方index.html.erb(硬编码)中的data-tables js文件:

<script type="text/javascript" src="/data-table.js"></script>

然后在一个单独的custom.js 文件中,这就是启动表的内容:

$(document).pjax('a[data-pjax]');
$('.openinside').pjax('.sidebarInner');

知道这里发生了什么吗?我认为该表没有被重新启动,但是当由于 Pjax 每次都没有加载标题时,我怎样才能让它重新启动呢?我什至尝试将 JS 链接放在桌子正下方,但没有成功!

【问题讨论】:

turbolinks 也有类似的问题。找到一种方法来初始化你的表,这应该可以解决问题。 @sytycs 是的,这就是我卡住的地方。这可能是一个愚蠢的问题,但初始化脚本应该在调用 data-tables.js 之前还是之后? @sytycs 我正在考虑给 turbolinks 一个机会。你能分享你用来初始化表格的解决方案吗? 这有点棘手。我用.live 调用替换了我的.on 调用,尽管.live 已被弃用(不推荐)。您需要弄清楚何时再次调用表 init。我不是 js 专家,所以这就是我现在所拥有的。对不起 【参考方案1】:

不确定这是否有帮助(因为这个问题是一个月前的问题),但我也有类似的情况。我有一个 pjax 数据表,它在我的页面咖啡脚本文件中加载。

所以我在 pjax:end 上调用加载,这确实有效,但我现在正在寻找一种加载方式,如果它被正常调用(所以要么文档完整,要么在 pjax 上:结尾)。

$(document).on "pjax:end", ->
  $("#leads_table").dataTable(bJQueryUI: true, sPaginationType: "full_numbers", bRetrieve: true)

也许这有助于(或帮助其他人)。

【讨论】:

谢谢!我最终完全放弃了 pjax,因为它运行缓慢,而且随着我的页面变得更大并承载更多数据,它看起来并不自然。我很可能已经打了太多电话或其他东西。如果我回去尝试再次实现它,我一定会尝试您的建议!

以上是关于Rails、pjax 和数据表的主要内容,如果未能解决你的问题,请参考以下文章

yii2 Pjax的使用

Yii2 Pjax的简单使用

Yii2 在 GridView 分页中禁用 pjax

在使用pjax重新加载gridview后,在gridview上的Yii2模态表单更新没有显示

Yii2网格视图使用ajax而不是Pjax进行过滤

pjax转发