Rails 6 - 动作电缆问题
Posted
技术标签:
【中文标题】Rails 6 - 动作电缆问题【英文标题】:Rails 6 - Action Cable Issue 【发布时间】: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);
);
);
);
【问题讨论】:
顺便说一句 - 如果有帮助的话,这就是我正在学习的教程iridakos.com/programming/2019/04/04/… 【参考方案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,一切似乎都运行良好。我知道这不是一个真正的答案,但至少我能够完成这个项目。
【讨论】:
以上是关于Rails 6 - 动作电缆问题的主要内容,如果未能解决你的问题,请参考以下文章