未捕获的ReferenceError:$未在Rails 5.2

时间:2018-05-17 13:25:12

标签: javascript jquery ruby-on-rails coffeescript ruby-on-rails-5.2

我正在构建一个rails应用程序,我想在用户点击索引表的行时将用户重定向到#show操作。

为此,我试图在我的coffeescript文件中使用Jquery。这是相关代码

index.html.erb:

<% @campaign.each do |campaign| %>
    <tr data-link="<%= campaign_path(campaign) %>">
        <td><%= campaign.campaign_name %></td>
        <td><%= campaign.start_date %></td>
        <td><%= campaign.created_at %></td>
        <td><%= link_to "delete", campaign, class:"btn btn-default btn-xs", method: :delete, data: { confirm: "You sure?" } %></td>
     </tr>
<% end %>

campaigns.coffee:

$ ->
  $("tr[data-link]").click ->
    window.location.replace($(this).data("link"));

但是一旦我运行了这个,我就会在浏览器控制台中看到这个错误:

Uncaught ReferenceError: $ is not defined

我已经安装了jquery-rails gem。也包含在我的application.js文件中。呈现我的应用程序时,我在标题中看到了Jquery脚本标记

<script src="/assets/jquery.self-bd7ddd393353a8d2480a622e80342adf488fb6006d667e8b42e4c0073393abee.js?body=1"></script>

但我仍然在控制台中看到此错误

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

我错过了什么吗?谢谢你的帮忙。

2 个答案:

答案 0 :(得分:1)

安装jquery-rails后,请按照application.js

的顺序进行操作
//= require jquery
//= require jquery_ujs 
.....

请参阅Installation

评论解决方案

我已经知道问题可能是什么了。在我的application.js中,每当我添加require jquery时,它都会破坏我的整个应用程序并将所有页面重定向到localhost:3000/undefined

//= require rails-ujs 
//= require jquery 
//= require activestorage 
//= require turbolinks 
//= require_tree . 

如果我删除require jquery,那么它将再次正常工作。

答案 1 :(得分:1)

我认为我也遇到了同样的问题,并且我意识到我一定对official guide有误解:

我在Rails 5.2(在Rails 5.1之后)中想到的

,因为我们具有内置的rails-ujs,所以不再需要jquery / jquery_ujs。

但是我错了。

我通过此article了解到自己的错误。在发现“ Uncaught ReferenceError:$未定义”问题之后,我只怀疑是“未安装jquery”。在检查了许多帖子之后,我尝试安装jquery-rails进行测试。

终于可以了。

是的,即使在Rails 5.2中,我们也需要jquery-rails。