Почему кокон в моем коде не захватывает обратные вызовы? - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть функциональная вложенная форма в рубиновом исполнении с коконом.Проблема в том, что я пытаюсь использовать before-insert и after-insert и ничего не делает.

Мой miew:

<div class="row" id="street_enter_itineraries">
          <table>
            <div class="street_enter_itineraries" >
              <%= f.fields_for :street_enter_itineraries do |builder| %>
                <%= render 'street_enter_itinerary_fields', f:builder %>
              <% end %>
            </div>
          </table>
            <div class="row">
              <%= link_to_add_association  "Añadir calle de entrada",f, :street_enter_itineraries, class: 'btn btn-info', data: {association_insertion_node: '.street_enter_itineraries', association_insertion_method: :append}  %>
            </div>
          </div>

Мой javascript

 $(document).ready(function() {
    $('#street_enter_itineraries')
        .on('cocoon:before-insert', function() {
            var allIds= document.getElementsByClassName("tipocalleentradaidentificar");
            if(allIds.length > 3){
                event.preventDefault();
            }
        })
        .on('cocoon:after-insert', function() {
            refreshID();
        })
});

Я видел этот пост: Кокон добавить ассоциацию, как ограничить количество ассоциаций , потому что это то, что я хочу сделать.Я тоже попробовал эту опцию, и консоль пуста:

 $(document).on('cocoon:after-insert', '.content form', function(e) {
    console.log('Something');
});

Заранее спасибо.

1 Ответ

0 голосов
/ 21 февраля 2019

Ваш селектор jquery неправильный, вы забыли # в начале, чтобы обозначить поиск идентификатора.Итак, вы написали $('street_enter_itineraries'), и вы должны написать

$('#street_enter_itineraries')

[РЕДАКТИРОВАТЬ] Создание JS TurboLinks относительно легко, либо убедитесь, что он запускается при turbolinks:load, вместо использования события готовности документа (вваш случай, вероятно, самый простой)

$(document).on('turbolinks:load', function(e) {
    $('#street_enter_itineraries') ...
})

или зарегистрируйте обработчики коконов в документе с правильным селектором:

$(document).on('cocoon:before-insert', '#street_enter_itineraties', function(e) {
   // do something here
}
...