如何在rails中使用ajax替换application.html.erb中的html?

时间:2014-02-18 09:11:36

标签: ruby-on-rails ajax

我尝试ajax内部产量,所有工作正常,但当我实现ajax替换application.html.erb(布局)中的HTML时,ajax无法工作,不能替换html。

我的application.html.erb:

<li id="header_notification_bar" class="dropdown">
  <a id="click_notif" data-toggle="dropdown" class="dropdown-toggle" data-remote="true" href="#">
    <i class="fa fa-bell-o"></i>
    <span id="notif_count" class="badge bg-warning"></span>
   </a>
   <ul id="notif_content" class="dropdown-menu extended notification">

   </ul>
</li>

<script>
  $(document).ready( function() {
    $('#notif_content').html("<%=j render 'layouts/load_notif' %>");
    $("#click_notif").click(function(){
      $('#notif_count').html("<%=j render 'layouts/notif_count' %>");
    }); 
  });           
 </script>

如果ajax实现内部yield,控制器中的操作应该添加format.js并使用action_name.js.erb创建文件,但是如果在application.html.erb中我该怎么办???

请帮助我,谢谢

1 个答案:

答案 0 :(得分:0)

你试过这个:

 $(document).ready( function() {

    $('#notif_content').html("<%=j render 'layouts/load_notif' %>");

    $(document).on("click", "#click_notif", function(){
      $('#notif_count').html("<%=j render 'layouts/notif_count' %>");
    }); 

  });

<强>代表

虽然你的问题很模糊,但你对ajax的典型问题是,因为你正在将新元素加载到DOM中,所以JS事件绑定器无法附加相应的事件

我不认为我编写的代码会开箱即用,但它基本上依赖于.delegate原则 - 您选择“容器”元素,并委托事件

因为DOM加载时容器存在,这意味着您将能够使用新元素。你真的需要提供你的AJAX代码来帮助我们创建一个更好的答案