Ruby on rails cocoon gem - 无法捕获回调事件
Ruby on rails cocoon gem - unable to capture callback events
您好,我目前正在为我的 rails 应用程序使用 Cocoon gem,它似乎工作正常,因为我能够在我的表单中添加和删除嵌套关联。但是,当我尝试在控制台记录回调(例如 "cocoon:after-insert")时,控制台上没有触发控制台日志。这可能是什么原因以及如何在我的控制台中捕获回调事件?我的应用程序中也捆绑了 gem remotipart,如果这能提供任何关于为什么我无法在我的控制台上捕获回调的线索。这是我的代码:-
#new.html.erb
<div class="content">
<%= form_for [@strategy,@goal], :html => {:class => 'ui form'}, :remote => true do |f| %>
<p>
<%= f.label :title %>
<%= f.text_field :name %>
</p>
<div id = 'tactical_field'>
<%= f.fields_for :tactics do |tactic| %>
<%= render 'tactic_fields', f: tactic %>
<% end %>
<div class="links">
<%= link_to_add_association "Add", f, :tactics %>
</div>
</div>
<p>
<%= f.button :submit => "", class: "ui button" %>
</p>
<% end %>
</div>
#_tactics_fields.html.erb
<div class="nested-fields">
<div class='field'>
<%= f.label :tactic %>
<%= f.text_field :name %>
</div>
<div class="field">
<%= f.label :rating %>
<%= f.text_field :rating %>
</div>
<%= link_to_remove_association "delete", f %>
</div>
# application.js
$(document).on('turbolinks:load', function() {
$('#tactical_field').bind('cocoon:before-insert', function() {
console.log('helloworld');
});
});
您必须确保事件是在周围 div 上捕获的。你也不需要 turbolinks 代码,你可以简单地做一些像
$(document).on('cocoon:after-insert', '.content form', function(e) {
console.log('Something');
});
所以简而言之:在完整文档上监听事件,如果我们捕获一个 cocoon:after-insert
事件,我们从 .content form
记录一些东西。
您好,我目前正在为我的 rails 应用程序使用 Cocoon gem,它似乎工作正常,因为我能够在我的表单中添加和删除嵌套关联。但是,当我尝试在控制台记录回调(例如 "cocoon:after-insert")时,控制台上没有触发控制台日志。这可能是什么原因以及如何在我的控制台中捕获回调事件?我的应用程序中也捆绑了 gem remotipart,如果这能提供任何关于为什么我无法在我的控制台上捕获回调的线索。这是我的代码:-
#new.html.erb
<div class="content">
<%= form_for [@strategy,@goal], :html => {:class => 'ui form'}, :remote => true do |f| %>
<p>
<%= f.label :title %>
<%= f.text_field :name %>
</p>
<div id = 'tactical_field'>
<%= f.fields_for :tactics do |tactic| %>
<%= render 'tactic_fields', f: tactic %>
<% end %>
<div class="links">
<%= link_to_add_association "Add", f, :tactics %>
</div>
</div>
<p>
<%= f.button :submit => "", class: "ui button" %>
</p>
<% end %>
</div>
#_tactics_fields.html.erb
<div class="nested-fields">
<div class='field'>
<%= f.label :tactic %>
<%= f.text_field :name %>
</div>
<div class="field">
<%= f.label :rating %>
<%= f.text_field :rating %>
</div>
<%= link_to_remove_association "delete", f %>
</div>
# application.js
$(document).on('turbolinks:load', function() {
$('#tactical_field').bind('cocoon:before-insert', function() {
console.log('helloworld');
});
});
您必须确保事件是在周围 div 上捕获的。你也不需要 turbolinks 代码,你可以简单地做一些像
$(document).on('cocoon:after-insert', '.content form', function(e) {
console.log('Something');
});
所以简而言之:在完整文档上监听事件,如果我们捕获一个 cocoon:after-insert
事件,我们从 .content form
记录一些东西。