2017-03-15 6 views
0

私はturbolinks5を使用してRoR 4で作られた古典的なカートアプリケーションを持っています。ユーザは、所与のアイテムの数量を変更し、「カートを更新」ボタンをクリックしてカートの値を更新することができる。RoR 4&TurboLinks 5キャッシュの問題

「カートを更新」ボタンは、カートを更新するためにAjaxフォーム(data-remote = "true")を送信し、メニューにあるカートアイテムカウンタを増減します。

問題は次のとおりです。ユーザーが「カートを更新」ボタンをクリックするたびにカートの新しいページがキャッシュされるため、ユーザーがカートを3回更新してブラウザの「戻る」ボタンをクリックすると、古いバージョンのカート(キャッシュに保存されている)。だから、

  1. 私は、カートページに<meta name="turbolinks-cache-control" content="no-cache">を使用している、これは問題を修正しますが、それはやり過ぎのように思えます。

  2. カートアイテム数(<li class="active" id="cart_total_items" data-turbolinks-permanent>222<\li>)を含む要素にはdata-turbolinks-permanentが使用されていますが、これは機能しません。「戻るボタン」をクリックすると、新しいものが表示されます。

  3. 私はそれが動作するすべてのページ<meta name="turbolinks-cache-control" content="no-cache">を使用している場合、しかし、明らかに私は、ページキャッシュ

ので、任意のアイデアは、なぜこれが動作していないを使用したいですか?

暖かいよろしく

+0

このイベントでコードを書くようにしてください $(document).on( "turbolinks:load"、function(){ //あなたのコード }); – Vishal

答えて

0

私は、彼らが開始する前に、あなたが探していることに関係なく、それらがリンクをクリックするか、呼び出しによって開始されたかどうかの、Canceling visits before they start

アプリケーションの訪問のためにキャンセルすることができていると信じてTurbolinks.visitへ。

訪問開始直前に通知されるturbolinks:before-visitイベントをリスンし、jQueryを使用している場合はevent.data.url(または$ event.originalEvent.data.url)を使用して訪問の確認を行いますロケーション。その後、event.preventDefault()を呼び出して訪問をキャンセルします。

復旧の訪問をキャンセルすることはできません。また、ターボリンクは起動しません。ターボリンクは、ブラウザの「戻る」ボタンまたは「進む」ボタンを使用して、すでに行われている履歴のナビゲーションに応答して復旧の訪問を行います。

visitイベントを受信して​​傍受してターボリンクがページをキャッシュするのを防ぐことができます。