创建.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