Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未捕获引用错误:$未在Rails 5.2中定义_Javascript_Jquery_Ruby On Rails_Coffeescript_Ruby On Rails 5.2 - Fatal编程技术网

Javascript 未捕获引用错误:$未在Rails 5.2中定义

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脚本标

我正在构建一个rails应用程序,当用户单击索引表的行时,我希望将用户重定向到
#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 .