2017-04-05 10 views
8

저는 매우 의아해하고 있습니다. 이것이 첫 번째 Faye 또는 Pub/Sub 구현이므로, 이것이 기본적인 질문이라면 저를 용서해주십시오. 다른 곳에서는 답변을 찾지 못했습니다. 어떤 도움을 주셔서 감사합니다.모델에서 데이터베이스 변경 (after_commit 콜백)에서 Faye로 레일 뷰를 업데이트하십시오.

모델 콜백 (after_commit, after_save 등)에서 Rails 뷰 페이지를 호출하고 업데이트하려면 어떻게해야합니까? after_commit 콜백이 발생하면 뷰/컨퍼런스/_show_current_participants.js.erb에서 실행되도록 뷰 업데이트를 수행하는 자바 스크립트 코드가 필요합니다.

나는 그것이 설치되어 있고보기에 return => true과 함께 link_to 태그를 사용하면 자바 스크립트가 실행되고 업데이트 된 것을 볼 수 있습니다. 문제는 사용자 상호 작용이 없기 때문에 데이터베이스 변경 (따라서 모델의 after_commit 콜백)에서만 뷰 업데이트를 페이지 기반으로 푸시해야한다는 것입니다. 이것이 올바른 도구/디자인 패턴/접근법이 아닌가?

after_commit 콜백에서 HTTP 요청을 시도하여 http://localhost:3000/conferences/conference_id/_show_current_participants_url으로 콜백했으나 페이지 뷰에서 Faye/javascript가 실행되지 않았습니다. 여기

그것입니다 _show_current_participants.js.erb 내가 => 진정한 원격와 LINK_TO 태그에 트리거를 설정하는 경우이 마법처럼 작동

<% participant_broadcast "/conferences/#{@conference.id}" do %> 
    alert('_show_current_participants.js.erb loaded'); 
    $("#current_participants_js").html("<%= escape_javascript(render partial: 'conferences/show_current_participants.html', locals: { conference: @conference }) %>"); 
<%end%> 

:

<li><%= link_to "Faye CALL", "#{@conference.id}/_show_current_participants", remote: true %></li> 

어떻게 이 설정을 수정하여 Faye 및 후속 부분의 자바 스크립트가 after_commit 모델 콜백에서 활성화되는 링크를 클릭하지 않아도됩니까? 이것은 잘못된 접근입니까? 데이터베이스 변경을 기반으로 업데이트 할 내보기를 어떻게 알 수 있습니까? 어떤 도움을 주셔서 감사합니다. 올바른 방향을 찾을 수 있도록 도와 주실 친절한 영혼에게 정말 감사드립니다. 더 I 작동 뭔가를 찾고 있어요 슈퍼 꽤 솔루션보다

페이 1.2.4 (안 페이 레일)
레일 4.1.5
루비이 시점에서 2.3.0
을 :

버전 .

당신은 자바 스크립트 콜백 메시지에 가입해야합니다

답변

0

:이 코드는 촬영 및 조정되는

<script> 
    $(function() { 
     // Create a new client to connect to Faye 
     var client = new Faye.Client('http://localhost:3000/conferences'); 

     // Subscribe to the public channel 
     var public_subscription = client.subscribe('/#{@conference.id}/_show_current_participants', function(data) { 
      $("#current_participants_js").html(data); 
     }); 
    }); 
</script> 

내 참조 :

https://code.tutsplus.com/tutorials/how-to-use-faye-as-a-real-time-push-server-in-rails--net-22600