NOTE / Ruby-On-Rails

Turbolinks 造成的相關錯誤

Turbolinks是一個Rails內建的頁面加速工具(Javascript套件工具),由於他只會重新載入body而header只有在第一次進入頁面時候去做載入動作,導致會吃不到某些 javascript造成某些功能失效。

如果有用到以下相關的jquery javascript功能

(funciont(){ //do somethings... })();
OR
$(function(){ //do somethings... });

請修改成加入turbolinks強制他執行load function這樣才會重新載入這個function

$(document).on("turbolinks:load", function(){ //do somethings... })

如果寫在頁面上面的 javascript 莫名其妙被觸發兩次 很大的機率就是Turbolinks所發的問題

解法: 1.關掉 Turbolinks的緩存功能 把下面指令加到 layout head裡面

<meta name="turbolinks-cache-control" content="no-cache">

2.使用layout 的 body載入當前的javascript 像這樣意思就是當載入 application.js 時只有載入這一頁所需的js

<body id="<%= "#{controller_name}-#{action_name}"%>">

如果想要拆掉這個功能

  1. Gemfile 拆除安裝檔
  2. app/assets/javascripts/application.js 拆除js檔案
  3. app/views/layout/application.html.erb 拆除屬性
Loading