【发布时间】:2015-12-29 13:57:41
【问题描述】:
我有一个索引页面,其中显示了foo 的多个对象,并将过滤器功能与 gem ransack 和这个 ajax 脚本集成:
$('#foo_search input').change(function(){
$.get($('#foos_search').attr('action'), $('#foos_search').serialize(), null, "script");
return false;
});
目前运行良好。之后,我在索引页面上显示的每个foo 上添加了一个工具提示,带有bootstrap。 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 %>
正如您所见,每个foo 都有一堆details,所有详细信息都应该显示在工具提示中。在我使用过滤器之前效果很好。一旦我用 ransack 过滤 foos,JS 就会停止工作,并且在我重新加载页面之前不会显示任何工具提示。
对此有什么想法吗?
编辑:
我在heroku上上传了当前版本,所以也许你可以在那里看看。既然是德语,我会告诉你如何解决这个问题:
你会在亮黄色的jumbtron 中看到foo 对象,例如,如果你将鼠标悬停在“Geeignet für”上,你会看到一个工具提示弹出。但是,一旦您使用左侧的过滤器功能,工具提示将不再起作用,而是会显示一些 html。
https://sheltered-escarpment-6887.herokuapp.com/list
编辑2: 这是在更改过滤器选项后重新加载部分:
//index.js.erb
$("#foos").html("<%= escape_javascript(render("foos")) %>");
编辑3: 非常感谢 cassioscabral 我想通了:
//index.js.erb
$("#houses").html("<%= escape_javascript(render("houses")) %>");
$('[data-toggle="tooltip"]').tooltip();
【问题讨论】:
标签: ajax ruby-on-rails-4 twitter-bootstrap-3 tooltip ransack