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