我有一个 jquery sortable 在我的模型控制器中调用 data-update-url ,一切都很好并且函数被调用。我的排序功能
def sort
params[:documents].each_with_index do |id, index|
Document.update_all({position: index+1}, {id: id})
end
render nothing: true
end
现在我正在使用 mongoid,我知道在 SQL 中做我想做的事情并不完全灵活。在用户以他想要的方式拖动列表中的元素后,我希望更新位置,以便用户列表的顺序通过会话保持不变。上面的函数是我开始的一个模板,所以我可以从正确的方向开始(从 railscasts)我的第一个问题是 params[:documents].each_with_index,我得到了一个
NoMethodError (undefined method `each_with_index' for nil:NilClass):
app/controllers/documents_controller.rb:16:in `sort'
所以我确定 params[:document] 不是我想要传递给 each_with_index 方法的东西,但我不确定要尝试什么?
更新 document.js.coffee
jQuery ->
$('#documents').sortable(
update: ->
$.post($(this).data('update-url'), $(this).sortable('serialize')));
相应的erb
<ul id="documents" data-update-url="<%= sort_documents_url %>">
<% @documents.each do |document| %>
<%= content_tag_for :li, document do %>
<%= render document %>
<% end %>
<% end %>