Uncaught ReferenceError: $ не определен в Rails 5.2 - PullRequest
0 голосов
/ 17 мая 2018

Я создаю приложение 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

Я что-то упустил? Спасибо за помощь.

Ответы [ 2 ]

0 голосов
/ 27 декабря 2018

Я думаю, что столкнулся с той же проблемой, и я понял, что неправильно понял официальное руководство :

, которое я думал в Rails 5.2 (после Rails 5.1), потому что мы имеемвстроенные rails-ujs, нам больше не нужны jquery / jquery_ujs.

Но я ошибся.

Я узнал свою ошибку из этой статьи .После того, как я обнаружил проблему «Uncaught ReferenceError: $ не определено», все, что я сомневался, это «не установлен jquery».И после проверки многих постов я попытался установить jquery-rails для тестирования.

Наконец-то это работает.

Да, нам нужны jquery-rails даже в Rails 5.2.

0 голосов
/ 18 мая 2018

После установки 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, тогда он снова начнет работать нормально.

...