Обратные вызовы Cocoon Gem в форме строительства действий вид обновления - PullRequest
0 голосов
/ 04 июня 2019

При создании формы с использованием драгоценного камня кокона при вставке нового кокона я могу обнаружить действие, вызвав обратный вызов «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

...