Как получить идентификатор экземпляра модели в хэш параметров канала Action Cable? - PullRequest
0 голосов
/ 14 мая 2019

Обзор кабеля действия 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: ->
        # ...
    # ...

И если я делаю это неправильно, не стесняйтесь, дайте мне знать правильный путь.

...