Rails 6 — Проблема с кабелем действия

#jquery #ruby-on-rails #ruby-on-rails-6 #actioncable

#jquery #ruby-on-rails #ruby-on-rails-6 #actioncable

Вопрос:

Я немного новичок в Ruby, и я создаю довольно простое приложение Rails, которое позволяет использовать функцию типа чата с помощью Action Cable. В руководстве, которому я следую, не используется rails 6, поэтому при его создании он немного отличается, но, похоже, на данный момент все работает, кроме приведенного ниже jQuery для запуска подключения кабеля действия. Я получаю сообщение об ошибке консоли, в котором указано «Неперехваченная ошибка ссылки: приложение не определено» на cable.js досье. Это первый случай использования Action Cable и rails, поэтому любая помощь очень ценится.

Вот ссылка на мой репозиторий git: https://github.com/scottlandes1217/Hubbubb

cable.js

 // Action Cable provides the framework to deal with WebSockets in Rails.
// You can generate new channels where WebSocket features live using the `rails generate channel` command.
//
//= require action_cable
//= require_self
//= require_tree ./channels

(function() {
  this.App || (this.App = {});

  App.cable = ActionCable.createConsumer();

}).call(this);
  

forum_channel.js

 $(function() {
  $('[data-channel-subscribe="forum"]').each(function(index, element) {
    var $element = $(element),
        forum_id = $element.data('forum-id')
        messageTemplate = $('[data-role="message-template"]');

    $element.animate({ scrollTop: $element.prop("scrollHeight")}, 1000)

    App.cable.subscriptions.create(
      {
        channel: "ForumChannel",
        forum: forum_id
      },
      {
        received: function(data) {
          var content = messageTemplate.children().clone(true, true);
          content.find('[data-role="user-avatar"]').attr('src', data.user_avatar_url);
          content.find('[data-role="message-text"]').text(data.message);
          content.find('[data-role="message-date"]').text(data.updated_at);
          $element.append(content);
          $element.animate({ scrollTop: $element.prop("scrollHeight")}, 1000);
        }
      }
    );
  });
});
  

Комментарии:

1. кстати, это руководство, которому я следую, если это вообще поможет iridakos.com/programming/2019/04/04 /…

Ответ №1:

Вы взглянули на репозиторий авторов Github? Я не эксперт в jQuery, но, похоже, вы что-то упускаете.

Ответ №2:

Немного поиграв с Action cable, я не смог найти простого решения. Я пошел дальше и просто понизил рейтинг до rails 5, и, похоже, все работает отлично. Я знаю, что на самом деле это не ответ, но, по крайней мере, я смог завершить проект.

Ответ №3:

Это все еще неполный ответ:

У меня также все еще возникают проблемы, так как все учебные пособия предназначены для Rails 5.x, а cable.js файл относится к эпохе rails 5. rails 6 поставляется с app/javascripts/consumer.js файл, и вы должны удалить или переместить все приложения / ресурсы / javascripts.

Я считаю, что нам не нужно включать jQuery. Это было удалено.