在Rails 4中使用ajax进行过滤后,引导工具提示不起作用

在Rails 4中使用ajax进行过滤后,引导工具提示不起作用,ajax,ruby-on-rails-4,twitter-bootstrap-3,tooltip,ransack,Ajax,Ruby On Rails 4,Twitter Bootstrap 3,Tooltip,Ransack,我得到了一个显示foo的多个对象的索引页,并将一个过滤函数与gem和这个ajax脚本集成在一起: $('#foo_search input').change(function(){ $.get($('#foos_search').attr('action'), $('#foos_search').serialize(), null, "script"); return false; }); 目前这一切都很顺利。之后,我在索引页面上显示的每个foo上添加了一个工具提示。JS代码如

我得到了一个显示
foo
的多个对象的索引页,并将一个过滤函数与gem和这个ajax脚本集成在一起:

$('#foo_search input').change(function(){
    $.get($('#foos_search').attr('action'), $('#foos_search').serialize(), null, "script");
    return false;
});
目前这一切都很顺利。之后,我在索引页面上显示的每个
foo
上添加了一个工具提示。JS代码如下所示:

$('[data-toggle="tooltip"]').tooltip();
//index.html.erb
<div id="foos">
  <%= render 'foos' %>
</div>

//_foos.html.erb
<% @foos.each do |f| %>
  <div class="btn btn-default">
    <span data-toggle="tooltip" data-html="true" data-placement="top" title="<% f.details.each do |d| %><li><%= d.name %></li><% end %>">
      DETAILS
    </span>
  </div>
<% end %>
索引页的外观如下所示:

$('[data-toggle="tooltip"]').tooltip();
//index.html.erb
<div id="foos">
  <%= render 'foos' %>
</div>

//_foos.html.erb
<% @foos.each do |f| %>
  <div class="btn btn-default">
    <span data-toggle="tooltip" data-html="true" data-placement="top" title="<% f.details.each do |d| %><li><%= d.name %></li><% end %>">
      DETAILS
    </span>
  </div>
<% end %>
编辑3: 谢谢cassioscabral我想起来了

//index.js.erb
$("#houses").html("<%= escape_javascript(render("houses")) %>");
$('[data-toggle="tooltip"]').tooltip();
//index.js.erb
$(“#房屋”).html(“”);
$('[data toggle=“tooltip”]')。tooltip();

您应该调用方法
$('[data toggle=“tooltip”]')。tooltip()以便它可以再次呈现工具提示


我不明白为什么你的过滤器会影响它。也许它会在搜索之后呈现(并添加新的dom元素)部分,并且由于该元素会添加在初始的
.tooltip()
调用之后,再次调用将是正确的方式,因为它基本上是说“使用此
数据切换将工具提示添加到所有元素,包括新的元素”

好的,完全有道理。但哪种方式最好每次都重新加载插件。我添加了.js.erb文件,该文件在使用过滤器后正在重新加载分部文件。我想把它添加到那里是有意义的。我宁愿用filter submit按钮将调用绑定到
.tooltip()
。单击“过滤器”时,您可以检查是否有仍处于活动状态的Ajax调用发生,等待此调用结束,然后调用
.tooltip()
,正如您在我的代码中看到的那样,Ajax在过滤器表单的每次更改中都会发生。我根本没有使用提交按钮。是的,我没看到。您可以在该$.get上添加一个成功回调。但是绑定(对于每个成功的更改应用
.tooltip()
)也将与更改事件一起工作。