2017-06-02 6 views
0

現在、私はActionCableを学んでいます(代わりにエラー)。 私は奇妙な問題に直面しています。代わりにアクションケーブルが働いています。データをプッシュします。

私の目標は、グループ作成のためのチャネルを構築することです。ユーザがリフレッシュせずに新しいものを見ることを許可する。

この時点で、すべてがうまくいっています。しかし、私のグループの名前を表示しようとすると、ActionCableはもう働きません。グループはうまく作成されますが、リアルタイムでは表示されません。だから私はそれらを見るためにページを更新する必要があります。誰もこの問題について私を助けることができますか?

マイコード:

コントローラ(グループ):

def index 
    @company = current_user.company 
    @groups = @company.groups 
    end 

チャンネル(グループ):

class GroupsChannel < ApplicationCable::Channel 
    def subscribed 
    stream_from "groups" 
    end 

    def speak(data) 
    group = Group.create(name: data['group'], company_id: 12) 
    html = ApplicationController.render(partial: 'groups/group', local: { 
     group: group 
    }) 

    ActionCable.server.broadcast 'groups', group: html 
    end 

end 

コーヒーファイル(グループ):

App.groups = App.cable.subscriptions.create "GroupsChannel", 
    connected: -> 

    $(document).on 'keypress', '#group_name', (event) => 
     if (event.keyCode == 13) 
     @speak(event.target.value) 
     $('#group_name').val('') 
     $('#MyNewGroup').modal('toggle') 

    disconnected: -> 
    # Called when the subscription has been terminated by the server 

    received: (data) -> 
    $('#groups_area').append(data.group) 

    speak: (group) -> 
    @perform 'speak', {group: group} 

ビュー(インデックス):

<div class="container"> 
    <h1 style="text-align:center; margin-bottom: 30px; margin-top: 10px;">Vos groupes</h1> 
    <div id="groups_area"> 
     <%= render @groups%> 
    </div> 
    </div> 

ビュー(_group)

 <div class="col-md-3"> 
      <div class="panel panel-success"> 
      <div class="panel-heading"> 
       <h3 style="margin-top:0; text-align:center"> 


====================================Problem======================================== 
       <%= group.name %> 

====================================Problem======================================== 
       </h3> 
      </div> 

      <div class="panel-body"> 
       test body 
      </div> 
      </div> 
     </div> 

だから私はこの行を追加するとき<% = group.name%>、先頭に追加アクションもう動作していません。

答えて

2

あなたのチャンネルファイルに入力ミスがあるようです。部分をレンダリングするときは、ではなく、localsを使用する必要があります。だから、次の変更を行います:

html = ApplicationController.render(partial: 'groups/group', local: { 
    group: group 
}) 

変更locallocalsへ:

html = ApplicationController.render(partial: 'groups/group', locals: { 
    group: group 
}) 
+0

クール!おかげさまで@Laith Azer、あなたは私の夜を救っています! –

+0

あなたは一番歓迎です:) –

+0

いいキャッチ@LaithAzer –

関連する問題