我对Ruby有点陌生,我正在构建一个非常简单的Rails应用程序,它允许使用Action Cable进行聊天类型的功能。我下面的教程没有使用rails 6,所以在构建它时有点不同,但除了下面的jQuery启动Action Cable连接之外,现在似乎一切都在工作。我得到一个控制台错误,状态为";未捕获引用错误:应用程序未定义";在cable.js文件上。这是第一次使用Action Cable和导轨,因此非常感谢您的帮助。
这是我的git回购链接:https://github.com/scottlandes1217/Hubbubb
电缆.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);
}
}
);
});
});
你看了作者Github repo吗?我不是jQuery方面的专家,但你似乎遗漏了一些东西。
在玩了很多Action cable之后,我找不到一个简单的解决方案。我继续前进,刚刚降级到5号轨道,一切似乎都很顺利。我知道这不是一个真正的答案,但至少我能够完成这个项目。
这仍然是一个不完整的答案:
我仍然有问题,因为所有的教程都是针对Rails5.x的,而cable.js文件来自rails5时代。rails 6附带了一个app/javascripts/consumer.js文件,您应该删除或移动所有app/assets/javascripts。
我认为我们不应该包含jQuery。此项已删除。