Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Rails和Ajax更新记录数组_Javascript_Ruby On Rails_Ajax - Fatal编程技术网

Javascript 使用Rails和Ajax更新记录数组

Javascript 使用Rails和Ajax更新记录数组,javascript,ruby-on-rails,ajax,Javascript,Ruby On Rails,Ajax,假设我们有多个项目列表 <ul data-id="2"> <li> <span>Item name</span> </li> <li> <span>Item name</span> </li> <li> <span>Item name</span> </

假设我们有多个项目列表

<ul data-id="2">
    <li>
        <span>Item name</span>
    </li>
    <li>
        <span>Item name</span>
    </li>
    <li>
        <span>Item name</span>
    </li>
</ul>
我无法将卡阵列输出到任何地方。当我运行console.logcards时;我只是得到[],没有我能理解的数据。我的rails控制台似乎也没有输出任何参数数组


目标是将列表中的所有卡发送到我的rails控制器,并同时更新它们。

第一个问题,为什么选择li标签作为可排序标签而不是ul标签

允许对一组DOM元素进行排序

您应该选择ul标签而不是li

$'ul'。可排序{ 更新:函数事件,用户界面{ var list_id=$this.data'id'; var cards=$.map$this.find'li',functionel{ 返回{list\u id:list\u id, 订单:$el.index}; }; $.ajax{ url:/cards/, 类型:补丁, 数据类型:json, 数据:{cards:cards}, 成功:functionresp{ 控制台。log'Yay'; } }; } }; 保险商实验室{ 列表样式类型:无; 保证金:0; 填充:0; 宽度:60%; } 李{ 保证金:0 3px 3px 3px; 填充:0.4em; 左侧填充:1.5em; 字号:1.4em; 高度:18px; 边框:1px实心C5C5; 背景:f6f6f6; 字体大小:正常; 颜色:4545; } 项目名称 项目名称2 项目名称3
请完成您的脚本。添加所有涉及的数据,ui来自哪里?对不起,我更新了问题。我正在使用jquerysortable来拖动列表项。当发布列表项时,会调用update函数。最初,我重新创建了标记以简化问题。下面是应用函数的实际标记。我主要感兴趣的是在控制台日志中输出参数,这样我就可以看到我使用的是什么类型的数据/数组,这样我就可以知道如何将其传递给Rails。你能帮忙吗?@colmtuite如果你有问题,你应该用实际的标记向其他人解释,这样人们可以帮助你解决实际问题。您的第一个问题是关于输出卡片的问题。@colmtuite我的脚本中卡片的输出是一个对象数组,可以用rails处理,您试过了吗?而且,您的代码不是gist github中的实际标记,为什么?因为你没有把所有的密码都放进去。
$('li').sortable({
    update: function( event, ui ) {
        if (this === ui.item.parent()[0]) {

            var cards = ui.item.parent('ul li').map(function() {
                return {
                    list_id: $(this).closest('ul').data('id'),
                    order: $(this).index(),
                }
            }).get();

            $.ajax({
                url: "/cards/",
                type: "PATCH",
                dataType: "json",
                data: { cards: cards },
                success: function(resp){
                    console.log('Yay');
                }
            });
        }
    }
});