2017-06-02 14 views
0

ではありません。Turbolinks.enableTransitionCache私はturbolinks 5とレール5.1アプリで次の操作を実行しようとしている機能

$(document).on 'turbolinks:load', -> 
    REFRESH_INTERVAL_IN_MILLIS = 5000 
    if $('.f-pending-message').length > 0 
    setTimeout (-> 
     Turbolinks.enableTransitionCache(true) 
     Turbolinks.visit location.toString() 
     Turbolinks.enableTransitionCache(false) 
     return 
    ), REFRESH_INTERVAL_IN_MILLIS 

しかし、私は得ることに保つ:

TypeError: Turbolinks.enableTransitionCache is not a function. (In 'Turbolinks.enableTransitionCache()', 'Turbolinks.enableTransitionCache' is undefined)

私は何間違っている?

答えて

0

enableTransitionCache機能は旧バージョンのTurbolinksでのみ使用できます。あなたが独自に作成する必要がありますので、5 :(

現在Turbolinksは、ページの本文をリフレッシュする方法を持っている(とスクロール位置を維持)しないTurbolinksでは使用できません。

私はHow to refresh a page with Turbolinksでこれをカバーしている基本的には、現在のページを再訪する前にスクロール位置を保存し、ページのロード時、その位置に復元するあなたのケースではjQuery/CoffeeScriptので:。。タイマーがクリアされていることを

REFRESH_INTERVAL_IN_MILLIS = 5000 
timerID = null 
scrollPosition = null 

reload = -> 
    scrollPosition = [window.scrollX, window.scrollY] 
    Turbolinks.visit window.location.toString(), action: 'replace' 

$(document).on 'turbolinks:load', -> 
    if scrollPosition 
    window.scrollTo.apply window, scrollPosition 
    scrollPosition = null 

    if $('.f-pending-message').length > 0 
    timerID = window.setTimeout(reload, REFRESH_INTERVAL_IN_MILLIS) 

$(document).on 'turbolinks:before-cache turbolinks:before-render', -> 
    window.clearTimeout timerID 

注意をページが「アンロード」されたときに、ユーザーが指定されたintを持つ別のページに移動した場合にページがリロードされないようにするエルバル。

また、本体をリロードするのではなく、AJAXとjs.erbを介して必要なページの部分のみを更新することもできます。あなたが達成しようとしていることとHTMLがどのように構造化されているかについてもう少し詳しく知ることなく、このためのコードを書くのは難しいですが、考慮する価値があるかもしれません。

関連する問題