簡體   English   中英

如何使用turbolinks在Rails4上啟用`sorttable.js`

[英]How to enable `sorttable.js` on Rails4 with turbolinks

  • Rails 4.2.0,turbolinks(2.5.3)
  • jquery-rails(4.0.3),jquery-ui-rails(5.0.3)
  • sorttable.js
  • 適用於Chrome,Firefox和IE的應用

希望發生的事情 :一個重定向是否渲染,或者只需點擊在應用了新的一頁,用類中的任何表sorttable (我編輯它在原來的JS)應通過列標題排序。

實際發生的事情 :我在聯系頁面上。 我點擊刷新,JS中的記錄器語句出現了。 該插件按預期工作。 如果我導航到Home,然后返回到Contacts,該文件仍會列在頁面源中,但不會顯示任何記錄器語句。 該插件不起作用。

我們的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對我們來說不是一個解決方案。 如果文件不能與turbolinks一起使用,我願意使用寶石; 但是,gem應該為應用程序添加一些代碼。 我們寧願沒有專門的類來選擇要排序的列。 此外,一些待排序的列不是來自ActiveRecord(如1個單元中的2個屬性)。

經過大量調試后,我弄清楚為什么turbolinks不喜歡sorttable.js JS文件包含觸發器(一些基於瀏覽器類型)以在文檔加載時啟動sorttable。 這樣的事件監聽器與turbolinks不兼容。 我為完成這項工作所做的工作如下。

  1. vendor/assets/javascripts/sorttable.js移至app/views/shared/js/_sorttable.html.haml

  2. 使用以下命令對新文件進行前綴:javascript%script{languauge: "javascript"} ),並縮進所有后續行2個空格

  3. application.js刪除sorttable

  4. 在所有相關頁面的頂部,添加以下代碼塊:

     = render 'shared/js/sorttable' %script $(document).on("page:change", sorttable.init) 

有關代碼示例和進一步說明,請參閱此要點

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM