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
将<%=
yield %>
包裹在一个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 和数据表的主要内容,如果未能解决你的问题,请参考以下文章