jquery未在rails服务器上加载 - ' $未定义'

时间:2016-12-21 02:32:46

标签: javascript jquery ruby-on-rails ruby

我有一个rails应用程序,在我的一个视图中的某个嵌入式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并将其放在assets文件夹中,然后进行预编译并将以下行添加到布局的头部:

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

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

2 个答案:

答案 0 :(得分:1)

尝试添加: &lt;%= javascript_include_tag&#39;应用&#39;,&#39; jquery&#39;,&#39; data-turbolinks-track&#39; => true %>

查看您的网页上是否加载了jquery文件。

此外,你做的变通办法并不是hacky或bad,实际上对我来说我更愿意让gulp照顾我的所有资产,ruby照顾你的资产的方式非常缓慢和笨重,特别是如果你试图整合像ui路由器这样的角度,我编译和在gulp上整理的资产大约需要10秒,在ruby上花费的时间超过1分钟。

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

答案 1 :(得分:0)

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

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

切换回

<%= javascript_include_tag "application" %>