Javascript 如何在带有TurboLink的Rails4上启用'sorttable.js' Rails 4.2.0,TurboLink(2.5.3) jquery rails(4.0.3)、jquery ui rails(5.0.3) 在Chrome、Firefox和IE上使用的应用程序
应该发生什么:无论是重定向、渲染,还是仅仅单击应用程序中的新页面,任何具有类Javascript 如何在带有TurboLink的Rails4上启用'sorttable.js' Rails 4.2.0,TurboLink(2.5.3) jquery rails(4.0.3)、jquery ui rails(5.0.3) 在Chrome、Firefox和IE上使用的应用程序,javascript,ruby-on-rails,ruby-on-rails-4,turbolinks,sorttable.js,Javascript,Ruby On Rails,Ruby On Rails 4,Turbolinks,Sorttable.js,应该发生什么:无论是重定向、渲染,还是仅仅单击应用程序中的新页面,任何具有类可排序的表(我在原始JS中编辑过)都应该按列标题进行排序 实际发生的情况:我在联系人页面上。我点击refresh,JS中的logger语句出现。插件按预期工作。如果我导航到Home,然后返回Contacts,该文件仍会在页面源中列出,但不会出现logger语句。插件不工作 我们的application.js内容如下: //= require jquery //= require jquery_ujs //= requir
可排序的表(我在原始JS中编辑过)都应该按列标题进行排序
实际发生的情况:我在联系人页面上。我点击refresh,JS中的logger语句出现。插件按预期工作。如果我导航到Home,然后返回Contacts,该文件仍会在页面源中列出,但不会出现logger语句。插件不工作
我们的application.js
内容如下:
//= require jquery
//= require jquery_ujs
//= require jquery-ui
//= require jquery_nested_form
//= require bootstrap
//= require sorttable
//= require_directory .
//= require autocomplete-rails
//= require turbolinks
//= require bootstrap-switch
禁用每页或全部的TurboLink对我们来说不是一个解决方案。如果文件不能与TurboLink一起使用,我愿意使用gems;然而,gem应该在应用程序中添加少量代码。我们不希望有专门的类来选择要排序的列。另外,一些要排序的列不是来自ActiveRecord(如1个单元格中的2个属性)。经过大量调试,我明白了为什么TurboLink不喜欢sorttable.js
。JS文件包括触发器(一些基于浏览器类型),用于在加载文档时启动sorttable。此类事件侦听器与TurboLink不兼容。我所做的工作如下
将vendor/assets/javascripts/sorttable.js
移动到app/views/shared/js/_sorttable.html.haml
在新文件前面加上:javascript
(%script{languauge:“javascript”}
),并将以下所有行缩进2个空格
从application.js
在所有相关页面的顶部,添加以下代码块:
= render 'shared/js/sorttable'
%script
$(document).on("page:change", sorttable.init)
有关代码示例和进一步解释,请参阅