我有一个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的底层问题有关。
答案 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" %>