我正在使用jQuery Shapeshift进行一些列表的拖放排序。我需要的是将下面的数据发送或发送到我的rails控制器操作,以便我可以更新订单。
这是我每次拖动列表时都会在控制台中获得的内容。
list_46
0
list_45
1
list_38
2
list_44
3
list_39
4
list_37
5
这是我需要将上述数据发送到的确切路径。我的路线设置正确。
sortlists_boards POST /boards/sortlists(.:format)
Javascript代码
jQuery(function() {
$('.listwrap').shapeshift();
return $('.listwrap').on('ss-rearranged', function(e) {
$(this).children().each(function() {
#I need to send/post these two lines below to sortlists_boards_path
console.log($(this).attr("id"))
console.log($(this).index())
});
});
});
一些可能有帮助的Github问题
https://github.com/McPants/jquery.shapeshift/issues/64
答案 0 :(得分:0)
在每次拖放时创建/更新JavaScript对象,并向控制器发送ajax请求,您可以在其中读取对象并存储在数据库中。
答案 1 :(得分:0)
首先,修改您的Javascript以创建有序对的数组并将其发送到您的终端:
jQuery(function() {
$('.listwrap').shapeshift();
$('.listwrap').on('ss-rearranged', function(e) {
ordered_items = [];
$(this).children().each(function() {
ordered_items.push([$(this).attr("id"), $(this).index()]);
});
$.post('/boards/sortlists',
{ordered_items: JSON.stringify(ordered_items)},
function(data, status, jqXHR) {
// This is what gets rendered from your rails controller + action
});
});
});
然后,查看Rails端的内容并使用它执行某些操作
class BoardsController < ApplicationController
# ...
def sortlists
logger.info params[:ordered_items]
end
# ...
end
输出将转到log / development.log