Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Javascript in Assets not working after Rendering Partial in js.erb Ruby on Rails

Question similar to mine are asked before but here the scenario is bit different - I have a js.erb file in which I'm publishing using (private_pub) a partial like below

<% publish_to "/conversation/update_waiter" do %>
   $("#online_waiters").replace_html('<%= j(render :partial => "/restaurants/online_waiters")%>');     
<% end %>

the partial is rendered on all users wall successfully and no extra or duplicate divs are generated . But on click function (which is an anchor in newly rendered partial) stops working . While its functionality is defined in /assets/js . Now after showing that partial on users if i refresh the page , then the same partial which is displayed due to my cookies , works fine . Any help or idea will be appreciated

like image 660
Mani Avatar asked Mar 14 '23 00:03

Mani


1 Answers

Attach the click handler to a parent element of the generated elements and it will work on all generated elements from partials.

Say you have a div with class content which contains all your html.

$(".content").on("click", "#anchor_one", function(e) {
  console.log("Working!");
});

Or attach it to the document

$(document).on("click", "#anchor_one", function(e) {
  console.log("Working!");
});

Another solution is to add the handler inside your js.erb file.

like image 75
Oss Avatar answered Apr 06 '23 18:04

Oss