我目前有一个使用 Cocoon 生成的输入表单,并希望使其创建的输入字段可排序(使用 jQuery-ui 中的可排序)。
嵌套表单的代码是:
<%= f.simple_fields_for :checkout_procedures do |procedure| %>
<li><%= render 'checkout_procedure_fields', :f => procedure %></li>
<% end %>
<div class="links">
<%= link_to_add_association 'add step', f, :checkout_procedures %>
</div>
呈现的部分(_checkout_procedure_fields)是:
<div class="checkout_procedure nested-fields">
<table>
<tr>
<td><%= f.input :step %></td>
<td><%= link_to_remove_association "remove step", f %></td>
</tr>
</table>
</div>
我可以通过将现有元素放在 a<div>
中并使用 jQuery 将其设置为可排序来获得可排序的现有元素:
<div class="sortThese">
<%= f.simple_fields_for :checkout_procedures do |procedure| %>
<li><%= render 'checkout_procedure_fields', :f => procedure %></li>
<% end %>
</div>
<div class="links">
<%= link_to_add_association 'add step', f, :checkout_procedures %>
</div>
<script>
$(document).ready(function() {
$(".sortThese").sortable();
});
</script>
但是这样做会破坏 Cocoonlink_to_add_association
和link_to_remove_association
. 使用<ul>
with<li>
也会导致同样的 Cocoon 故障。我一直在寻找一些 javascript 来将每个输入表单移入和移出可排序的 div(这样做似乎使链接再次工作),但显然这是不雅的。如果有人有任何建议,我真的很感激他们!