我正在构建一个rails应用程序,我想在用户点击索引表的行时将用户重定向到#show
操作。
为此,我试图在我的coffeescript文件中使用Jquery。这是相关代码
<% @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
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
我错过了什么吗?谢谢你的帮忙。
答案 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。