首页 > 解决方案 > 未捕获的 ReferenceError: $ 未在 Rails 5.2 中定义

问题描述

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

为此,我尝试在我的咖啡脚本文件中使用 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 %>

广告系列.咖啡:

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

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

Uncaught ReferenceError: $ is not defined

我已经安装了jquery-rails宝石。也将它包含在我的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

我错过了什么吗?感谢您的帮助。

标签: javascriptjqueryruby-on-railscoffeescriptruby-on-rails-5.2

解决方案


我想我遇到了同样的问题,我意识到我一定误解了官方指南

我认为在 Rails 5.2(Rails 5.1 之后)中,因为我们有内置的 rails-ujs,我们不再需要 jquery/jquery_ujs。

但是我错了。

我通过这篇文章了解了我的错误。在我发现“未捕获的 ReferenceError:$ 未定义”问题后,我怀疑的是“没有安装 jquery”。在检查了很多帖子后,我尝试安装jquery-rails进行测试。

最后它起作用了。

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


推荐阅读