javascript - jquery 未在 Rails 服务器上加载 - '$ is not defined'

标签 javascript jquery ruby-on-rails ruby

我有一个 Rails 应用程序,当在我的 View 之一中的某些嵌入式 JS 中调用时,该应用程序无法加载 jQuery。我环顾四周并看到了一些常见的解决方案,因此我将列出我已经完成的操作:

jQuery 在我的 Gemfile 中未注释:

gem 'jquery-rails'

jQuery 已加载到 application.js 中:

//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require_tree .

application.html.erb 使用 include 标签调用:

<%= javascript_include_tag 'application', 'data-turbolinks-track'=> true %>

我也尝试过:

<%= javascript_include_tag 'application' %>

哪里可能出了问题?

编辑:

我能够让它工作,但这是一个明确的解决方法,我想找出一个更永久的解决方案。首先,我发现一位同事对该服务器的设置略有不同,并且 application.html.erb 被另一个布局覆盖,该布局在头部(或文件中的其他任何位置)不包含 javascript_include_tag 行。尽管添加了该行代码,错误仍然存​​在。我从在线 API 链接( https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js )保存了 jquery.min.js 并将其放置在 asset 文件夹中,然后预编译并将以下行添加到布局的头部:

<%= javascript_include_tag 'jquery.min', 'data-turbolinks-track'=> true %>

这最终导致我的 jQuery 脚本中的 ajax 调用成功调用了脚本。但是,仍然存在两个问题:首先,正如我上面所说,我想要一个更持久、更少黑客的解决方案,其次,ajax 调用的成功函数不起作用,尽管它在我的私有(private)测试服务器上正常工作。两者之间的代码是相同的,所以我知道这不是代码中的问题,而且我几乎可以肯定它与一般扰乱 jQuery 的任何潜在问题有关。

最佳答案

尝试添加: <%= javascript_include_tag 'application','jquery', 'data-turbolinks-track' => true %>

查看 jquery 文件是否正在您的页面上加载。

此外,您所做的解决方法无论如何都不是 hacky 或坏的,实际上对我来说,我更喜欢让 gulp照顾我所有的 Assets ,ruby 处理你的 Assets 的方式相当缓慢和笨重,特别是如果你试图将 Angular 之类的东西与 ui 路由器集成,我在 gulp 上编译和 mangle 的相同 Assets 大约需要 10 秒, ruby 需要超过 1 分钟。

您听说过的最后一件事bower ?它是一个很棒的包管理器,向您的应用程序添加依赖项非常容易。

关于javascript - jquery 未在 Rails 服务器上加载 - '$ is not defined',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41254203/

相关文章:

javascript - jQuery width() 返回 0

javascript - 单击时 addEventListener 不起作用

javascript - Jquery Ui 可拖动想要设置放置位置

javascript - 仅在 Google map (v3) 中单击折线时触发一次单击事件

javascript - CSS 获取父元素属性

javascript - 在嵌套请求循环内请求到另一台服务器

ruby-on-rails - 无法使用测试单元测试用户名验证

javascript - 为 .mp4 添加关闭脚本

html - 强制标签在动态文本中关闭

javascript - 无限滚动和 will_paginate 多次附加项目的 'next page'