【问题标题】:Rails 6 - Action Cable IssueRails 6 - 动作电缆问题
【发布时间】:2021-01-28 09:16:42
【问题描述】:

我对 Ruby 有点陌生,我正在构建一个非常简单的 Rails 应用程序,它允许使用 Action Cable 进行聊天类型的功能。我正在遵循的教程没有使用 rails 6,因此在构建它时它有点不同,但似乎除了下面的 jQuery 来启动 Action Cable 连接之外,此时一切都在工作。我收到一个控制台错误,在 cable.js 文件中显示“未捕获的 ReferenceError:未定义应用程序”。这是有史以来第一次使用动作电缆和导轨,因此非常感谢您的帮助。

这是我的 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);
        }
      }
    );
  });
});

【问题讨论】:

标签: jquery ruby-on-rails ruby-on-rails-6 actioncable


【解决方案1】:

你看过作者Github repo吗? 我不是 jQuery 方面的专家,但您似乎缺少一些东西。

【讨论】:

    【解决方案2】:

    这仍然是一个不完整的答案:

    我也有问题,因为所有教程都是针对 Rails 5.x 的,cable.js 文件来自 rails 5 时代。 rails 6 带有一个 app/javascripts/consumer.js 文件,你应该删除或移动所有 app/assets/javascripts。

    我相信我们不需要包含 jQuery。它已被删除。

    【讨论】:

      【解决方案3】:

      在玩了相当多的 Action cable 之后,我没能找到一个简单的解决方案。我继续前进,只是降级到 Rails 5,一切似乎都运行良好。我知道这不是一个真正的答案,但至少我能够完成这个项目。

      【讨论】:

        猜你喜欢
        • 2018-07-29
        • 2016-11-23
        • 2017-05-27
        • 2018-04-20
        • 1970-01-01
        • 1970-01-01
        • 2017-05-11
        • 2019-09-25
        相关资源
        最近更新 更多