XaoGao / Todoser

Clone trello
3 stars 11 forks source link

Отправка comment через cable_ready #215

Open XaoGao opened 2 years ago

XaoGao commented 2 years ago

Делать после #193. Сейчас создания комментария идет перезагрузка страницы, нужно после успешного создания комментария отправить данные через active cable 1) Создать канал comments

rails g channel comment

2) В js файле

import CableReady from 'cable_ready'
import consumer from './consumer'

consumer.subscriptions.create('CommentChannel', {
  received (data) {
    if (data.cableReady) CableReady.perform(data.operations)
  }
})

3) Добавить в контроллере коментариев

include CableReady::Broadcaster

4)

XaoGao commented 2 years ago

Пример channel

import consumer from "./consumer"
import CableReady from "cable_ready"

document.addEventListener("turbolinks:load", () => {
  const commentsArea = document.getElementById("comments")

  if (commentsArea !== null) {
    const commentableId = commentsArea.dataset.commentableId;
    const commentableType = commentsArea.dataset.commentableType;

    consumer.subscriptions.create({ channel: "CommentChannel", commentable_type: commentableType, commentable_id: commentableId}, {
      received(data) {
        console.log(data)
        if (data.cableReady) CableReady.perform(data.operations)
      }
    }); 
  }
})
XaoGao commented 2 years ago

На списке комментария нужно указать

.[class="comments" id="comments" data-commentable-type="#{commentable.class}" data-commentable-id="#{commentable.id}"]
XaoGao commented 2 years ago

Сам CommentChannel

class CommentChannel < ApplicationCable::Channel
  def subscribed
    stream_from "comment_#{params[:commentable_type]}_#{params[:commentable_id]}_channel"
  end
end