Rails的嵌套属性与jQuery

问题描述:

走过时,我有如下定义:Rails的嵌套属性与jQuery

params.require(:sets).permit(:name, zones_attributes: [:latitude, :longitude]) 

,我想通过AJAX使用jQuery送他们,就是我觉得我构建它错了,因为我不断收到此错误:

Unpermitted parameters: 0, 1

这是我送:

{ 
"sets"=>{ 
    "name"=>"America", 
    "zones_attributes"=>{ 
     "0"=>[ 
      "49.95121990866204", 
      "-117.861328125" 
     ], 
     "1"=>[ 
      "-33.578014746143985", 
      "-55.986328125" 
      ] 
     } 
    }, 
    "action"=>"create", 
    "controller"=>"sets" 
} 

我认为这个问题是在纬度/经度值之前添加“键”值。 这是我如何添加这些值:

this.zones.push([marker.position.lat(), marker.position.lng()]); 

有没有办法将它们加入到无钥匙?或者我经历了错误的方式?

UPDATE

Ajax代码:

$.ajax({ 
     type: "POST", 
     url: '/zone_sets', 
     data: { zone_sets: { name: map.markerListName ,zones_attributes: map.zones } }, 
     success: function (data) { $("input[name=zone_set]").append(data) }, 
     }); 
+0

这是我在'这是我发送' – WhomWhomWhom

+0

打印我的问题对不起,只是实现^ –

+0

为什么他们没有钥匙?你能发布你的表单的代码吗?你有'accept_nested_attributes_for'吗?你使用'fields_for'吗? – toddmetheny

改变当前ajax代码:

$.ajax({ 
     type: "POST", 
     dataType: 'json', 
     headers: { 
      'Content-Type': 'application/json' 
     }, 
     url: '/zone_sets', 
     data: JSON.stringify({ zone_sets: { name: map.markerListName ,zones_attributes: map.zones } }), 
     success: function (data) { $("input[name=zone_set]").append(data) }, 
    }); 

正如你可以看到实际的问题是Rails如何处理和解析的请求。

+0

工作得很好!谢谢!!!! – WhomWhomWhom

你应该将它们添加这样的:

this.zones.push({'latitude': marker.position.lat(), 'longitude': marker.position.lng()}); 

是的, “钥匙” 看起来像它的问题。

params.require(:sets).permit(:name, zones_attributes: [:latitude, :longitude])期待您的请求是在格式:

{ 
"sets"=>{ 
    "name"=>"America", 
    "zones_attributes"=>[ 
    { 
     "latitude": "49.95121990866204", 
     "longitude": "-117.861328125" 
    }, 
    { 
     "latitude": "-33.578014746143985", 
     "longitude": "-55.986328125" 
    } 
    ] 
}, 
"action"=>"create", 
"controller"=>"sets" 
} 

即“0”和“1”的误差指的是像数组索引。

+0

你的散列错误'“zones_attributes”=> {[.....' –

+0

@Зелёный刚刚编辑,是否解决了它? –

+0

我不知道,我只是指出你错误的语法。 –