11

我做这样的模态:

显示模式的链接:

<%= link_to "versão resumida", resumed_rep_life_animal_path(animal, :partial => true), 'data-toggle' => 'modal', 'data-target' => '#myModal', 'data-no-turbolink' => true %>

模态html本身:

<div class="modal hide fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
  <div class="modal-body"></div>
  <div class="modal-footer">
    <button class="btn btn-primary" data-dismiss="modal" aria-hidden="true">Fechar</button>
  </div>
</div>

但是,data-no-turbolink没有按预期工作。如果我刷新页面,它可以正常工作,但是,当我浏览带有 turbolinks 的页面时,看起来data-no-turbolink只是被忽略了。

难道我做错了什么?我有一些模态,例如我的应用程序中的示例,不想删除它们,也不想删除 turbolinks...

提前致谢。

4

2 回答 2

7

正如 davydotcom 所说,模式不起作用的原因是因为它们被绑定到$(document).ready而不是$(document).on('page:change')turbolinks 使用的。

jquery-turbolinks gem 将使准备好的调用也响应 turbolink 的 page:change 调用。

第 1 步:将 gem 添加jquery-turbolinks到您的 Gemfile。

第 2 步:按以下顺序将其添加到您的 JavaScript 清单文件中:

//= require jquery
//= require jquery.turbolinks
//= require jquery_ujs
//
// ... your other scripts here ...
//
//= require turbolinks

第三步:重启你的服务器。繁荣!

于 2015-01-30T18:11:55.507 回答
2

data-no-turbolinks 不是这里的问题......

开箱即用的 bootstrap js 似乎只监控 document.ready,并且 bootstrap JS 可能需要修改以检查 page:load

看第222行

这只会在包含引导程序的第一个请求上触发。它也需要修改为在 page:load 上触发。

我可以提出的一个建议是使用 gem 'twitter-bootstrap-turbo' 来获取引导程序。这是twitter-bootstrap-rails的一个分支,增加了 turbolinks 处理程序。

于 2012-10-05T13:31:43.157 回答