現在、Cocoonを使用して入力フォームを生成していますが、それによって作成された入力フィールドをソート可能(jQuery-uiからソート可能)にします。コクーン(ネストされたフォーム)とjQueryソートを一緒に使用する
ネストされたフォームのコードは次のとおりです。
<%= 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>
しかし、これを実行するとCocoonのlink_to_add_association
とlink_to_remove_association
の機能が損なわれます。 <ul>
を<li>
と使用すると、同じコクーンの誤動作も発生します。私はソート可能divの各入力フォームを移動するいくつかのjavascriptをハックしようとしています(これを行うとリンクが再び機能するように見えますが)明らかにこれは控えめです。誰かが何か提案があれば、本当に感謝しています!
わからないからバージョンが、現在は( 'simple_fields_for'によってラップされている)レール' fields_for'は 'id'のために非表示の入力フィールドを追加します。これをスキップするには、 ':include_id => false'を' simple_fields_for'に与えます。これにより隠れた入力が削除され、ソートは前と同じように再び動作します。 – nathanvda
ありがとう@nathanvda。これは私のために働く。私が変更しなければならなかった唯一のもう1つの事は、まだ入れ子になっているオブジェクトのIDが必要なので、フィールドを部分的に隠してIDとして追加することでした。 – sdoxsee