Я не уверен, что я просто пытаюсь сделать что-то сумасшедшее здесь, может быть, мне просто нужно указать правильное направление. У меня есть список элементов с галочками. Мне нужно, чтобы два человека знали (ситуация интервью), если другой поставил галочку. ActionCable показался идеальным для этого.
Все настроено для actioncable, но мне нужно отправить точный элемент, который нужно отметить, в actioncable, чтобы он мог отметить его на внешнем интерфейсе другого человека. Я пытался отправить элемент DOM, но он сериализуется в JSON, и я не могу изменить его обратно на другом конце (или просто не знаю, как его использовать).
Ниже мой код до сих пор. Первый box.html предназначен для отметки вашего собственного поля в форме. Затем, после первого preventDefault(), я пытаюсь отправить тот же элемент box в 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 являются локальными для документа страницы на одной стороне соединения. Вам нужно ввести какой-то уникальный идентификатор, который будет действовать во всех задействованных системах.
Это может быть идентификатор из соответствующей записи базы данных, какой-то естественный ключ или даже SecureRandom.hex
(но в этом случае вам нужно убедиться, что оба вовлеченных пользователя получат одинаковые идентификаторы)
Например: <div class='int_success' data-id='<%= applicant.id %>'>
И App.room.ping(box.data('id'))
о! Конечно. Отмечу это правильно, когда мне это удастся