【发布时间】:2018-10-27 19:00:21
【问题描述】:
我正在构建一个 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 %>
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
我错过了什么吗?感谢您的帮助。
【问题讨论】:
-
你确定 jQuery 是在你的脚本之前加载的吗?如果你写
jQuery而不是$呢? -
您可能需要先添加
$(document).on "turbolinks:load", ->。 -
@LyoshaKorogoda 我尝试添加 jQuery 而不是 $ - 它显示相同的错误 - Uncaught ReferenceError: jQuery is not defined
-
@PatMellon 不确定我是否做对了。这是您建议的语法吗? $(document).on "turbolinks:load", -> $("tr[data-link]").click -> window.location.replace($(this).data("link"));但它仍然显示相同的错误
-
类似
$(document).on "turbolinks:load", ->$("tr[data-link]").click ->window.location.replace($(this).data("link"));returnreturnreturn
标签: javascript jquery ruby-on-rails coffeescript ruby-on-rails-5.2