Я создаю рубиновое приложение и пытаюсь реализовать кабель действия, когда пользователь делает сообщение, я хочу, чтобы индекс сообщения обновлялся для всех пользователей. В моих каналах/posts.js у меня есть:
App.posts = App.cable.subscriptions.create("PostsChannel", {
connected: function() {
// Called when the subscription is ready for use on the server
},
disconnected: function() {
// Called when the subscription has been terminated by the server
},
received: function(data) {
// Called when there's incoming data on the websocket for this channel
console.log(data)
$('#list').html("<%= escape_javascript render('list') %>")
}
});
в PostRelayJob.rb у меня есть:
class PostRelayJob < ApplicationJob
queue_as :default
def perform(post)
ActionCable.server.broadcast "posts",
post: PostsController.render(list)
# Do something later
end
end
и в моделях/post.rb:
after_commit { PostRelayJob.perform_later(self) }
Когда я добавляю сообщение в консоль сервера, я получаю:
[ActiveJob] [PostRelayJob] [57126ec7-b091-48fc-91aa-2f940caa9421] Performing PostRelayJob from Async(default) with arguments: #<GlobalID:0x00000003aa10d8 @uri=#<URI::GID gid://today-i-have2/Post/15>>
[ActiveJob] Enqueued PostRelayJob (Job ID: 57126ec7-b091-48fc-91aa-2f940caa9421) to Async(default) with arguments: #<GlobalID:0x000000037af000 @uri=#<URI::GID gid://today-i-have2/Post/15>>
[ActiveJob] [PostRelayJob] [57126ec7-b091-48fc-91aa-2f940caa9421] Performed PostRelayJob from Async(default) in 3.66ms
Rendering posts/create.js.erb
Rendered posts/_list.html.erb (7.5ms)
Rendered posts/create.js.erb (9.0ms)
Однако сообщение в другом браузере не обновляется, я новичок в рельсах, поэтому любая помощь будет очень признательна.