user4550164
user4550164

Reputation:

How to append ruby code to html element

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(

  • )? I tried to .append('<%...%>') once, it didn't work.

    Upvotes: 2

    Views: 1244

  • Answers (1)

    JeffD23
    JeffD23

    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

    Related Questions