Reputation:
I'm making a chat using ActionController::live
.
stream
in my ChatsController pushes posts.
def stream
response.headers['Content-Type'] = 'text/event-stream'
start = Time.zone.now
loop do
Post.where('created_at > ?', start).each do |post|
response.stream.write("event:push\n")
response.stream.write("data:#{post.to_json}\n\n")
start = post.created_at
end
sleep 2
end
rescue IOError
ensure
response.stream.close
end
Using javascript, I wrap gravatar and this json with <li>
and append this to <ul>
. Then, I want to use gravatar_for
method I defined and render partial for post
model.
Would you teach me how to append ruby code (<%...%>) to html elements(
.append('<%...%>')
once, it didn't work.
Upvotes: 2
Views: 1244
Reputation: 9328
If your controller is responding to javascript, you can render a partial using from the corresponding js.erb file like so:
$('element').append('<%= escape_javascript(render partial: "post") %>');
Upvotes: 1