Attualmente ho un modulo di input generato utilizzando Cocoon e vorrei rendere i campi di input creati da esso ordinabili (utilizzando ordinabile da jQuery-ui).Utilizzo di Cocoon (Nested Forms) e jQuery ordinabili insieme
Il codice per la forma annidata è:
<%= 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>
Le parziali che viene reso (_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>
sono in grado di ottenere gli elementi esistenti ordinabili mettendoli dentro un <div>
e impostandola ordinabile utilizzando 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>
Tuttavia, ciò interrompe la funzionalità di Cocoon's link_to_add_association
e link_to_remove_association
. L'utilizzo di <ul>
con <li>
determina inoltre lo stesso malfunzionamento di Cocoon. Mi sono guardato attorno per hackerare un javascript che spostava ogni form di input dentro e fuori il sortable div (facendo questo sembra che i collegamenti funzionino di nuovo), ma ovviamente questo è inelegante. Se qualcuno ha qualche suggerimento, li apprezzerei davvero!
Non sono sicuro dal quale versione, ma attualmente il rotaie 'fields_for' (che è avvolto dal' simple_fields_for') aggiunge un campo di input nascosto per il 'id'. Puoi saltare questo, dando l'opzione ': include_id => false' a' simple_fields_for'. Ciò rimuoverà l'input nascosto e quindi l'ordinamento funzionerà nuovamente come prima. – nathanvda
Grazie a @nathanvda. Questo funziona per me. L'unica altra cosa che dovevo cambiare era aggiungere l'id come input nascosto all'interno dei campi partial poiché ho ancora bisogno dell'ID per il mio oggetto nidificato. – sdoxsee