현재 Cocoon을 사용하여 입력 폼을 생성했으며이를 통해 생성 된 입력 필드를 sortable로 만들려고합니다 (jQuery-ui에서 정렬 가능).Cocoon (중첩 된 양식)과 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>
<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>
과 함께 사용하면 동일한 누에 고치 기능 장애가 발생합니다. 나는 sortable div (링크를 다시 작동하게 만드는 것)에서 각각의 입력 폼을 움직이는 자바 스크립트를 해킹하기 위해 주변을 둘러 보았지만, 분명히 이것은 비 효과적이다. 아무도 제안이 없다면 정말 고맙겠습니다!
확실하지 이후 버전,하지만 현재 (은'simple_fields_for'에 의해 싸여있다) 레일'fields_for'는'id'에 대한 숨겨진 입력 필드를 추가합니다. ': include_id => false' 옵션을'simple_fields_for'에 주면이 작업을 건너 뛸 수 있습니다. 이렇게하면 숨겨진 입력이 제거되고 정렬은 이전과 같이 다시 작동합니다. – nathanvda
감사합니다. @nathanvda. 이것은 나를 위해 작동합니다. 내가 바꿔야 만했던 또 다른 유일한 점은 id가 내 중첩 된 객체의 id를 필요로하기 때문에 partial을 숨겨진 입력으로 id를 추가하는 것이 었습니다. – sdoxsee