Uncaught ReferenceError: $ не определен в Rails 5.2
Я создаю приложение Rails, где я хочу перенаправить пользователя на #show
действие, когда они нажимают на строку таблицы индекса.
Для этого я пытаюсь использовать Jquery в моем файле coffeescript. Вот соответствующий код
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
драгоценный камень. Включил это в мой 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
Я что-то пропустил? Спасибо за помощь.
1 ответ
Я думаю, что столкнулся с той же проблемой, и я понял, что я неправильно понял официальное руководство:
который я думал в Rails 5.2 (после Rails 5.1), потому что у нас есть встроенные rails-ujs, нам больше не нужен jquery/jquery_ujs.
Но я был неправ.
Я узнал свою ошибку через эту статью. После того, как я обнаружил проблему "Uncaught ReferenceError: $ не определено", все, что я сомневался, это "не установлен jquery". И после того, как проверил много постов, я попытался установить jquery-rails для тестирования.
Наконец-то это работает.
Да, нам нужны jquery-rails даже в Rails 5.2.
После установки 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
затем он снова начнет работать нормально.