ActionController::Liveとjavascriptがうまく働かない
初心者です。RoRでチャットを作っています。下記のコードで走らせても思ったように動きません。どこに問題がありますか?
ユーザーの新規のpostを1秒ごとに取得して、render_to_stringした後で送信しています。クライアント側では、それをpostが表示される"post-list"にappendしています。しかし、ユーザーがpostを作成しても、作成は成功しますが、表示がされません。
chats.coffee
$ ->
chat_id = $("chat_id").text()
eventSource = new EventSource(chat_id+"/stream")
eventSource.addEventListener 'push', (event) ->
post = event.data
$('#post-list').append(post)
chats.controller.rb
include ActionController::Live
def stream
@chat = Chat.find(params[:id])
response.headers['Content-Type'] = 'text/event-stream'
start = Time.zone.now
loop do
Post.uncached do
Post.where('created_at > ?', start).where('chat_id = ?', @chat.id).each do |post|
html = render_to_string partial:'shared/_post.html.erb', object:post
response.stream.write("event:push\n")
response.stream.write("data:#{html}\n\n")
start = post.created_at
end
end
sleep 1
end
rescue
ensure
response.stream.close
end
お願いします。