Обзор кабеля действия Rails гласит следующее:
Если у вас есть поток, связанный с моделью, то трансляция
используется может быть сгенерирован из модели и канала. Следующие
Пример будет подписаться на трансляцию, как
comments:Z2lkOi8vVGVzdEFwcC9Qb3N0LzE
class CommentsChannel < ApplicationCable::Channel
def subscribed
post = Post.find(params[:id]). # This is the line I'm trying to copy.
stream_for post
end
end
Это точно , что я хочу сделать для одной из моих моделей (у меня есть модель Incident
, у которой много Messages
, поэтому я делаю MessagesChannel
). Однако я не понимаю, как параметр :id
был передан в этом сценарии. Я знаю, что первый аргумент вызова App.cable.subscriptions.create
в CoffeeScript на стороне клиента передается в код на стороне сервера в виде хэша params, но, поскольку CoffeeScript вызывается на каждой странице приложения, как узнать, смотрю страницу инцидента (потому что идентификатор может ссылаться на другую модель, если мы находимся на другой странице или вообще не присутствуем), и как я могу получить идентификатор инцидента в параметрах канала?
Моя (неверная) попытка была такой:
App.messages = App.cable.subscriptions.create { channel: "MessagesChannel", id: <%= params[:id] %> },
connected: ->
# ...
# ...
И если я делаю это неправильно, не стесняйтесь, дайте мне знать правильный путь.