일부 사용자 속성에 따라 사용자를 특정 채널에 가입 시킬지 여부를 결정하는 코드가 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()
자산/자바 스크립트/통지/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
페이지가로드 처음으로, 나는 방송 때
이것은 application.html.haml
내 코드입니다 메시지를 해당 채널에 보내면 콘솔에서 "Data Received"를 한 번만 기록합니다. 링크를 클릭하여 다른 페이지로 리디렉션하고 해당 채널에 새 메시지를 브로드 캐스트합니다. 이제 콘솔에 "데이터 수신"이 두 번 기록됩니다. 그리고 지금까지 등등 ...
, 나는 크롬의 콘솔에서 실행하면 내가 링크를 클릭 얻은마다 한 번씩 (동일한 채널에 여러 구독을 반환
App.cable.subscriptions.subscriptions
다른 페이지로 리디렉션 됨).
참고 : 제대로 작동하기 때문에이 게시물에 추가하지 않을 조치 케이블 설정이 더 있습니다.
어떻게 피할 수 있습니까? 어떤 아이디어?
현상금에 감사드립니다! 문제를 해결하기 위해이 답변을 찾은 경우 "수락"으로 표시하십시오. 다시 한번 감사드립니다 :) –