Ich habe derzeit ein Eingabeformular mit Cocoon generiert und möchte die Eingabefelder von sortierbaren erstellen (mit sortierbaren von jQuery-Ui).Verwendung von Cocoon (verschachtelte Forms) und jQuery zusammen sortierbar
Der Code für die verschachtelte Form ist:
<%= 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>
Die partielle dass gemacht wird (_checkout_procedure_fields) ist:
<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>
Ich bin in der Lage sortierbar die vorhandenen Elemente zu erhalten, indem sie innerhalb des Setzens ein <div>
und wenn er sortierbar mit 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>
Aber das bricht die Funktionalität von Cocoons link_to_add_association
und link_to_remove_association
. Die Verwendung von <ul>
mit <li>
führt ebenfalls zur gleichen Cocoon-Fehlfunktion. Ich habe mich umgesehen, um etwas Javascript zu hacken, das jedes Eingabeformular in das sortierbare div bringt (dies scheint die Links wieder funktionieren zu lassen), aber das ist offensichtlich unelegant. Wenn jemand irgendwelche Vorschläge hat, würde ich sie wirklich schätzen!
seit welcher Version nicht sicher, aber zur Zeit der Schienen 'fields_for' (die durch die' simple_fields_for' gewickelt wird) fügt ein verstecktes Eingabefeld für die 'id'. Sie können dies überspringen, indem Sie die Option ': include_id => false' auf die' simple_fields_for' setzen. Dadurch wird die versteckte Eingabe entfernt und die Sortierung funktioniert wieder wie zuvor. – nathanvda
Danke @nathanvda. Das funktioniert für mich. Die einzige andere Sache, die ich ändern musste, war, die ID als versteckte Eingabe innerhalb der Felder partiell hinzuzufügen, da ich immer noch die ID für mein verschachteltes Objekt benötige. – sdoxsee