Вы действительно не сравниваете яблоки с яблоками здесь.
Вы сравниваете шаблон, представленный в запросе XHR, с things/index
с атрибутами объекта @thing
от POST до things/create
.
Вам необходимо обработать объект thing
, который возвращается из Pusher в веб-браузере, и соответствующим образом изменить DOM.
Или, возможно, более простым решением было бы, если бы ваш контроллер отправлял форматированный HTML в Pusher вместо атрибутов объекта. Тогда ваш javascript-код может просто вставить отформатированный HTML-код, а не пытаться проанализировать объект thing
и изменить DOM вручную.
Ответ на комментарий @ user94154:
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я никогда не слышал о Pusher, пока ваш вопрос.
Это создает проблему, т.к. ваш HTML обычно форматируется в представлении, но вы должны отправлять данные в Pusher с контроллера. Я могу придумать несколько способов сделать это:
- Если разметка HTML невелика, вы можете нарушить правило «Не повторять себя», повторить разметку HTML в своем контроллере и отправить ее в Pusher
- Если разметки много, я бы абстрагировал свой код генерации представления помощникам. Вы также можете вызвать помощника с вашего контроллера.
На стороне клиента у вас должен быть пустой div (или некоторый элемент DOM), который может содержать HTML-код из Pusher. И сделайте что-то вроде этого:
myChannel.bind('thing-create', function(thing) {
$("div#thing_holder").html(thing.html);
});