Я пытаюсь использовать вспомогательный метод scriptaculous sortable_element для реализации сортируемого с помощью перетаскивания списка в моем приложении Rails. Хотя код для представления выглядит довольно простым, я действительно не совсем уверен, что писать в контроллере для обновления столбца «position».
Вот что я вижу, "_show_related_pgs.erb":
<ul id = "interest_<%=@related_interest.id.to_s%>_siblings_list">
<%= render :partial => "/interests/peer_group_map", :collection => @maps, :as => :related_pg %>
</ul>
<%= sortable_element("interest_"+@related_interest.id.to_s+"_siblings_list", :url => {:action => :resort_related_pgs}, :handle => "drag" ) %>
<br/>
А вот соответствующая строка из частичного: "интересов / peer_group_map.erb"
<li class = "interest_<%=@related_interest.id.to_s%>_siblings_list"
id = "interest_<%=related_pg.interest_id.to_s%>_siblings_list_<%=related_pg.id.to_s%>">
Магия Scriptaculous UI прекрасно работает с ними, но я не уверен, как изменить столбец «position» в БД, чтобы отразить это. Должен ли я передать коллекцию @maps обратно в контроллер и сказать ей, чтобы она проходила итерацию и увеличивала / уменьшала атрибут "position" в каждом? Если так, как я могу определить, какой предмет был перемещен вверх, а какой вниз? Я не смог найти что-то конкретное, используя Chrome dev-tools в сгенерированном html.
После каждого переупорядочения мне также нужно перерисовывать коллекцию @maps, поскольку позиция печатается рядом с именем каждого интереса (я использую его в качестве «дескриптора», указанного в моем вызове sortable_element ) выше) - хотя это должно быть тривиально.
Есть мысли?
Спасибо,
-e