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

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

Вот ссылка на мой репозиторий 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);
        }
      }
    );
  });
});

person Scott    schedule 14.10.2020    source источник
comment
кстати, это руководство, которому я следую, если это вообще помогает iridakos.com/programming/2019/04/04/   -  person Scott    schedule 14.10.2020


Ответы (3)



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

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

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

person Mathieu J.    schedule 18.10.2020

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

person Scott    schedule 21.10.2020