0

create.js.erb

    $("#chat").append("<%= j render(@message) %>");
    $("#new_message")[0].reset();

これを以下のようなものに変更する必要があります。

function newMessage() {
    $("#chat").append("<%= j render(@message) %>");
    $("#new_message")[0].reset();
}
channel.bind('new_message', newMessage());

これは、 MessagesControllerのcreateメソッドに対する ajax リクエスト呼び出しです。この関数をindex.html.erbからのコールバックとして呼び出してPusherサーバーを使用するには、そのように変更する必要があります。私が実現したいのはリアルタイム チャット アプリケーションです。そのため、すべてのクライアントがブラウザーを更新せずにメッセージをプッシュできる必要があります。

index.html.erb

<script src="http://js.pusherapp.com/1.9/pusher.min.js"></script>
<script type="text/javascript" charset="utf-8">
  $(function() {
    var pusher = new Pusher('app_key'); // Replace with your app key
    var channel = pusher.subscribe('my_channel_chat');
  });
</script>

create.js.erb ファイルのコンテキストと何らかの形で混乱していると思います。誰でもこれで私を助けることができますか?

アップデート:

メッセージコントローラー

  def index
    @messages = Message.all
  end

  def create
    @message = current_user.messages.create!(params[:message])
    Pusher.trigger('my_channel_chat', 'new_message', {:message => @message.content})
  end
4

1 に答える 1