Javascript 未捕获引用错误:$未在Rails 5.2中定义
我正在构建一个rails应用程序,当用户单击索引表的行时,我希望将用户重定向到Javascript 未捕获引用错误:$未在Rails 5.2中定义,javascript,jquery,ruby-on-rails,coffeescript,ruby-on-rails-5.2,Javascript,Jquery,Ruby On Rails,Coffeescript,Ruby On Rails 5.2,我正在构建一个rails应用程序,当用户单击索引表的行时,我希望将用户重定向到#show操作 为此,我尝试在我的coffeescript文件中使用Jquery。这是相关代码 index.html.erb: 但一旦我运行了这个,我就会在浏览器控制台中看到这个错误: Uncaught ReferenceError: $ is not defined 我已经安装了jqueryrailsgem。它也包含在我的application.js文件中。当我的应用程序呈现时,我在标题中也看到了Jquery脚本标
#show
操作
为此,我尝试在我的coffeescript文件中使用Jquery。这是相关代码
index.html.erb:
但一旦我运行了这个,我就会在浏览器控制台中看到这个错误:
Uncaught ReferenceError: $ is not defined
我已经安装了jqueryrails
gem。它也包含在我的application.js
文件中。当我的应用程序呈现时,我在标题中也看到了Jquery脚本标记
<script src="/assets/jquery.self-bd7ddd393353a8d2480a622e80342adf488fb6006d667e8b42e4c0073393abee.js?body=1"></script>
我遗漏了什么吗?感谢您的帮助。安装后,按照application.js
//= require jquery
//= require jquery_ujs
.....
见
来自评论的解决方案
我已经猜到问题出在哪里了。在我的application.js
中,每当我添加requirejquery
,它就会破坏我的整个应用程序,并将所有页面重定向到localhost:3000/未定义的
//= require rails-ujs
//= require jquery
//= require activestorage
//= require turbolinks
//= require_tree .
如果我删除了
require jquery
,那么它将再次正常工作。我想我遇到了同样的问题,我意识到我一定误解了:
我在Rails5.2(在Rails5.1之后)中认为,因为我们有内置的RailsUJS,我们不再需要jquery/jquery_JS
但我错了
我通过这件事认识到了我的错误。在我发现“uncaughtreferenceerror:$isnotdefined”问题后,我怀疑的是“没有安装jquery”。在检查了许多帖子之后,我尝试安装以进行测试
最后它成功了
是的,即使在rails 5.2中,我们也需要jquery rails。您确定jquery是在脚本之前加载的吗?如果您编写
jQuery
而不是$
,您可能需要添加$(文档)。在“turbolinks:load”上,首先->
。@LyoshaKorogoda我尝试添加jQuery而不是$-它显示了相同的错误-未捕获引用错误:jQuery不是defined@PatMellon不确定我是否做对了。这就是你建议的语法吗$(文档)。在“turbolinks:load”上,单击->$(“tr[数据链接]”)。单击->窗口.location.replace($(此).data(“链接”);它仍然显示相同的错误,例如$(文档)。在“TurboLink:load”上,单击->
$(“tr[数据链接])。单击->
窗口.位置.替换($(this).data(“链接”)
return
return
return
我想我已经找到了问题所在。在我的application.js中,每当我添加requirejquery时,它就会破坏我的整个应用程序,并将所有页面重定向到localhost:3000/未定义/=require rails ujs//=require jQuery//=require activestorage//=require turbolinks//=require_tree。
如果我删除“require jQuery”,它将再次正常工作。我不知道发生了什么,但是正确的顺序是从requirejquery
开始,如果您使用requirejquery\u ujs
则不需要使用require rails ujs
karl li您是对的,如果您使用的是Rails 5.1或更高版本,您不需要jquery ujs
,因为对于这些版本,正确的库是Rails ujs
,但是如果您想在应用程序中使用jquery,您仍然需要jquery Rails
jqueryujs
和jqueryrails
的用途不同。
Uncaught ReferenceError: $ is not defined
at campaigns.self-4617c47e06384e281aa2550caae08f3b4986441d2bfff9b6e3519f0a1e82f3d7.js?body=1:2
at campaigns.self-4617c47e06384e281aa2550caae08f3b4986441d2bfff9b6e3519f0a1e82f3d7.js?body=1:8
(anonymous) @ campaigns.self-4617c47e06384e281aa2550caae08f3b4986441d2bfff9b6e3519f0a1e82f3d7.js?body=1:2
(anonymous) @ campaigns.self-4617c47e06384e281aa2550caae08f3b4986441d2bfff9b6e3519f0a1e82f3d7.js?body=1:8
//= require jquery
//= require jquery_ujs
.....
//= require rails-ujs
//= require jquery
//= require activestorage
//= require turbolinks
//= require_tree .