現在、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>
<div>
既存の要素を a 内に配置し、 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>
しかし、これを行うと、Cocoon の機能link_to_add_association
とlink_to_remove_association
. <ul>
withを使用すると<li>
、同じ Cocoon の誤動作が発生します。各入力フォームをソート可能な div の内外に移動する JavaScript をハックしようと探し回っています (これを行うと、リンクが再び機能するように見えます) が、明らかにこれは洗練されていません。誰か提案があれば、本当に感謝します!