【问题标题】:jquery not loading on rails server - '$ is not defined'jquery 未在 Rails 服务器上加载 - '$ 未定义'
【发布时间】:2016-12-21 02:32:46
【问题描述】:

我有一个 Rails 应用程序在我的一个视图中的某些嵌入式 JS 中调用时无法加载 jQuery。我环顾四周,看到了一些常见的解决方案,所以我将列出我已经完成的工作:

jQuery 在我的 Gemfile 中未注释:

gem 'jquery-rails'

jQuery 在 application.js 中加载:

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

application.html.erb 调用包含标签:

<%= 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 并将其放在 assets 文件夹中,然后预编译并将以下行添加到布局的头部:

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

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

【问题讨论】:

  • 你在安装包后重启服务器了吗?
  • 是的,我做到了。几次
  • 如果您检查该页面源,您是否看到 jquery 在脚本标记中加载?
  • 不,我没有看到。
  • 只是为了清楚它会被缓存,所以它看起来像这样:“" *应该在页面顶部对这些进行大量检查。

标签: javascript jquery ruby-on-rails ruby


【解决方案1】:

尝试添加: => true %>

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

此外,您所做的解决方法无论如何都不是 hacky 或坏的,实际上对我来说,我更喜欢让 gulp 处理我所有的资产,ruby 处理你的资产的方式非常缓慢和笨拙,尤其是如果您尝试将 Angular 与 ui 路由器集成,我在 gulp 上编译和处理的​​相同资产大约需要 10 秒,而在 ruby​​ 上需要超过 1 分钟。

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

【讨论】:

    【解决方案2】:

    javascript文件加载问题使用下面的代码我认为对你有帮助

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

    切换回

    <%= javascript_include_tag "application" %>
    

    【讨论】:

    • 我无法理解您要传达的内容,您能否编辑您的评论以进行澄清和/或校对?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-15
    • 1970-01-01
    • 2016-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多