我有一个功能嵌套的形式在红宝石制作与茧。问题是我试图使用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();
})
});
我看过这篇文章:Cocoon add association, how to limit number of associations,因为它是我想做的。我也试过这个选项,而控制台是空的:
$(document).on('cocoon:after-insert', '.content form', function(e) {
console.log('Something');
});
提前致谢。
您的jquery选择器是错误的,您在开始时忘记了#
以表示搜索ID。所以你写了$('street_enter_itineraries')
,你应该写
$('#street_enter_itineraries')
[编辑]制作js turbolinks相对容易,要么确保它是在turbolinks:load
上触发,而不是使用文档就绪事件(在你的情况下可能是最简单的)
$(document).on('turbolinks:load', function(e) {
$('#street_enter_itineraries') ...
})
或使用正确的选择器在文档上注册cocoon处理程序:
$(document).on('cocoon:before-insert', '#street_enter_itineraties', function(e) {
// do something here
}