В классе Usercontent
есть записи, которые генерируются и показываются с помощью вызовов AJAX с турболинками, по сути, с помощью rails, кроме вызова jQuery3 в приложении rails 5.
Однако есть два случая рендеринга, один длявсе объекты класса (usercontent
), еще один для подмножества (point
), на той же странице, но в виде вкладок, с двумя различными формами и следующим usercontents.js
javascript.
$(document).on('turbolinks:load', function() {
$('[data-js-usercontent-form]').on("ajax:success", function(event, data, status, xhr){
var usercontent = $(xhr.responseText).hide();
$('#usercontents').append(usercontent);
usercontent.fadeIn(1000);
});
$('[data-js-usercontent-id]').on("ajax:success", function(event, data, status, xhr){
var usercontent_id = xhr.responseJSON.id;
$('[data-js-usercontent-id=' + usercontent_id + ']').hide();
});
$('[data-js-point-form]').on("ajax:success", function(event, data, status, xhr){
var point = $(xhr.responseText).hide();
$('#points').append(point);
point.fadeIn(1000);
});
$('[data-js-point-id]').on("ajax:success", function(event, data, status, xhr){
var point_id = xhr.responseJSON.id;
$('[data-js-point-id=' + point_id + ']').hide();
});
});
контроллер объявляет две коллекции
@usercontents = Usercontent.all
@points = Usercontent.where(['contenttype_id = ?', 1]).all
представление имеет два различных вызова коллекций
<div id=points class='tableize'>
<%= render @points %>
<div id=usercontents class='tableize'>
<%= render @usercontents %>
, которые, в свою очередь, вызывают отдельный элемент для обновления через AJAX _point.html.erb
(обе части находятся в каталоге views / usercontents)
<div class='row' data-js-point-id=<%= point.id %>>
и _usercontent.html.erb
<div class='row' data-js-usercontent-id=<%= usercontent.id %>>
Проблема заключается в том, что первая отдает «полную» коллекцию с неправильным вызовом data-js
:
<div id="points" class="tableize">
<div class="row" data-js-usercontent-id="33"></div>
<div class="row" data-js-usercontent-id="34"></div>
<div class="row" data-js-usercontent-id="35"></div>
<div class="row" data-js-usercontent-id="36"></div>
<div class="row" data-js-usercontent-id="37"></div>
<div class="row" data-js-usercontent-id="38"></div>
<div class="row" data-js-usercontent-id="39"></div>
<div class="row" data-js-usercontent-id="48"></div>
</div>
Очевидно, render @points
не рендерится должным образом.Как это можно исправить?