为了账号安全,请及时绑定邮箱和手机立即绑定

Rails 4 turbo-link阻止jQuery脚本工作

Rails 4 turbo-link阻止jQuery脚本工作

米琪卡哇伊 2019-08-27 17:34:33
Rails 4 turbo-link阻止jQuery脚本工作我正在构建一个Rails 4应用程序,我有一些分散的js文件,我试图包括“rails方式”。我将jquery插件移动到/ vendor / assets / javascripts中,并更新了清单(application.js)以要求它们。当我在本地加载页面时,我看到它们正确显示。但是,我从其中一个已编译的脚本中获得了不一致的行为。我有一个名为projects.js的特定于控制器的js文件,它通过以下方式在application.js中引用require_tree .://= require jquery//= require jquery_ujs//= require turbolinks//= require bootstrap.min//= require jquery.form.min//= require_tree .我看到文件被正确包含,并且它的工作时间有一半。另一半时间,projects.js中的东西似乎没有做任何事情(它主要是jquery动画和一些ajax请求)。当它不起作用时,我会点击按钮几次,什么都不会发生,然后我会抛出这个错误:Uncaught TypeError: Cannot read property 'position' of null turbolinks.js?body=1:75当脚本处于各个视图(错误的方式)时,这种情况从未发生过,所以我很确定问题不在于我的javascript代码。另一个可能相关的细节是projects.js中的东西被包装在一个$(document).ready(function(){。此外,我正在开发模式下进行测试,因此javascripts和css不会被资产管道组合。知道这里发生了什么吗?我是Rails的新手,但我已尽力遵守所有惯例。更新!当我的项目脚本不起作用时,它是可预测的。第一页加载每次都有效。然后我点击一个链接到一个使用我的project.js行为的新页面,第二个页面永远不会工作。我点击几次,最终抛出上面的错误。我仍然不确定为什么,但我怀疑这与涡轮连接有关。
查看完整描述

3 回答

?
ITMISS

TA贡献1871条经验 获得超8个赞

此railscast已经提供了解决方案

这是一个例子(我喜欢使用的那个)。

ready = ->
  # ..... your js$(document).ready(ready)$(document).on('page:load', ready)

还有一个宝石可以解决这个问题,让你以旧的方式继续这样做。它工作得很好:)


查看完整回答
反对 回复 2019-08-27
  • 3 回答
  • 0 关注
  • 606 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信