我是Ruby的新手,我正在构建一个非常简单的Rails应用程序,它允许使用Action Cable的聊天类型的功能。我正在学习的教程没有使用Rails6,所以当我构建它的时候,它有一点不同,但是看起来除了下面的jQuery启动一个动作电缆连接之外,一切都在工作。我在cable.js文件上收到一个控制台错误,指出“未捕获ReferenceError:应用程序未定义”。这是第一次使用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);
}
}
);
});
});发布于 2020-10-18 09:25:28
这仍然是一个不完整的答案:
我仍然有问题,因为所有的教程都是针对Rails 5.x的,cable.js文件来自rails 5时代。Rails6附带了一个app/javascripts/consumer.js文件,您应该删除或移动所有的app/assets/javascripts。
我认为我们不应该包括jQuery。它已被删除。
https://stackoverflow.com/questions/64345293
复制相似问题