При создании формы с использованием драгоценного камня кокона при вставке нового кокона я могу обнаружить действие, вызвав обратный вызов «cocoon: after insert».
И я использую это для замены элемента моегоid, чтобы использовать другую функцию javascript для вычисления процента в другом поле, введенном пользователем.
Но когда я снова открываю форму, используя действие обновления, коконы переопределяются.И это не вызывает обратного вызова «кокон: после вставки».чтобы сбросить идентификаторы, как это работает при вставке один за другим
Я хотел знать, есть ли способ перехватить обратные вызовы при возврате формы для редактирования.Таким образом, я могу обнаружить это и перерисовать новый идентификатор снова
Я использую этот код в "form.html.erb", чтобы заменить идентификатор, когда он создает новые экземпляры кокона
var i = 0;
$(document).on('cocoon:after-insert', function (e) {
i++;
var id_drop_down_product = 'id_drop_down_product' + i;
$(this).find("#id_drop_down_product").attr('id', id_drop_down_product);
});
Я думал, что это будет работать, при создании формы для редактирования
Вот мой код, который вызывает коконы, где все тоже работает
<div class="form-group">
<%= form.fields_for :pedido_produtos do |builder| %>
<% render partial: "shared/pedido_produto_fields", locals: {f: builder} %>
<% end %>
<%= link_to_add_association('Produto', form, :pedido_produtos, class: "btn btn-outline-success") %>
</div>
<div class="nested-fields">
<div class="order_product">
<div class="form-group col-md-12">
<%= f.collection_select(:product_id, Product.all, :id, :nome, {:prompt => "Selecione um Product"}, {:class => 'form-control', onchange: "searchProduct($(this).val(),this.id);", id: "dropselectProduct", :required => true}) %>
<%= f.text_field :quantity, class: "form-control", id: "quantityproducty", :required => true, onchange: "update_discount($(this).val(),this.id);" %>
<%= f.text_field(:porcent, class: "form-control", id: "porcent", readonly: true) %>
</div>
<%= link_to_remove_association('Del.', f, class: "btn btn-outline-danger") %>
</div>
</div>
в представлении, у меня естьполе, чтобы получить значение продукта и значение в процентном поле (которое было выбрано пользователем) и рассчитать процент от нового значения продукта.
но в этом представлении выможно вставить несколько продуктов и выполнить это действие.
Пример просмотра изображения: https://ibb.co/s3Z43yk