如何轻松为 ActionCable 发送 DOM 个元素?

How to easily send DOM elements for ActionCable?

我不确定我是否只是想在这里做一些疯狂的事情,也许我只需要指出正确的方向。我有一个元素列表,带有勾选框。我需要两个人知道(面试情况)对方是否勾选了一个方框。 ActionCable 似乎非常适合这个。

一切都已设置好,actioncable-wise,但我需要将需要勾选的确切元素发送到 actioncable,以便它可以在其他人的前端勾选它。我曾尝试发送 DOM 元素,但它被序列化为 JSON 并且我无法在另一端将其改回(或者根本不知道如何使用它)。

下面是我目前的代码。第一个 box.html 是在表格上勾选您自己的方框。然后在第一个 preventDefault() 之后,我尝试将相同的框元素发送到 actioncable 以在其他人的前端勾选它。

  $('.btn-group-vertical').each(function(){
    var $this = $(this);
    var success = $this.find('.applicant-success')
    var failure = $this.find('.applicant-failure')
    var box = $this.parent().next().find('.int_success');
    success.on('click', function(e) {
      box.html("<img class='interview-img3' src='/images/tick.png'>");
      e.preventDefault();
      App.room.ping(box);
    });
});

DOM 元素在连接的一侧是页面文档的本地元素。您需要引入一些唯一的 ID,这将在所有相关系统中有效。 它可能是来自相应数据库记录的 ID、一些自然键,甚至是 SecureRandom.hex(但在这种情况下,您必须确保涉及的两个用户都将获得相同的 ID)

例如:<div class='int_success' data-id='<%= applicant.id %>'>

App.room.ping(box.data('id'))