私は自分のapplication.html.hamlにいくつかのユーザー属性に応じて、特定のチャンネルにユーザーをサブスクライブするかどうかを決定するコードを持っています。Railsアクションケーブルとターボリンク:複数のバインディングを避ける
私は体内にこのコードを置いているので、別のページにリダイレクトされるリンクをクリックすると、古い接続を維持するのではなくユーザーが再度購読するので、メソッドがあります複数回実行されます。
これはapplication.html.haml
で私のコードです:
%html
%head
-# other stuff
= javascript_include_tag 'application', 'data-turbolinks-track': 'reload'
%body
-# other stuff
- if current_user.is_admin?
:coffee
MyApp.AdminNotifications.init()
資産/ JavaScriptの/通知/ admin_notifications.js.coffee
window.MyApp.AdminNotifications = class AdminNotifications
@init: ->
App.cable.subscriptions.create "ProductsChannel",
received: (data) ->
console.log 'Data Received' # This is being executed multiple times
ページがロードされた最初の時間、私は放送時にメッセージをそのチャンネルに送信すると、コンソールは「データ受信」を1回だけログに記録します。 リンクをクリックして別のページにリダイレクトすると、そのチャンネルに新しいメッセージがブロードキャストされ、コンソールに「データ受信済み」が2回記録されます。そして、これまでのように...
実際に、私はクロームのコンソール上で実行すると:それは私がリンクをクリックして得たたびに一度(同じチャネルに複数のサブスクリプションを返し
App.cable.subscriptions.subscriptions
別のページにリダイレクトされます)。
注:これは正常に機能しているため、この記事に追加していないアクションケーブルの設定があります。
どうすれば避けることができますか?何か案は?
賞金ありがとう!問題を解決するためにこの回答が見つかった場合は、「受け入れ済み」と記入してください。再度、感謝します :) –