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) },
});
改变当前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如何处理和解析的请求。
工作得很好!谢谢!!!! – 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”的误差指的是像数组索引。
你的散列错误'“zones_attributes”=> {[.....' –
@Зелёный刚刚编辑,是否解决了它? –
我不知道,我只是指出你错误的语法。 –
这是我在'这是我发送' – WhomWhomWhom
打印我的问题对不起,只是实现^ –
为什么他们没有钥匙?你能发布你的表单的代码吗?你有'accept_nested_attributes_for'吗?你使用'fields_for'吗? – toddmetheny