我正在尝试获取角度资源以将我的对象正确序列化为 rails 3.2 控制器操作。数据格式是 JSON,工作和必需的输入(在 Rails 端)应该是:
"data"=>[{"id"=>29, "column"=>0, "position"=>0}], "id"=>"2", "page"=>{}
这适用于我们的旧代码:
$.ajax
type: "put"
url: target
dataType: "json"
contentType: "application/json"
data: JSON.stringify({data: widgets})
但是,如果我尝试使用角度资源,我会得到如下所示的内容:
"data"=>"[{\"id\":28,\"column\":2,\"position\":0}]", "id"=>"2", "page"=>{"id"=>"2"}
我首先创建了一个工厂:
app.factory "Page", ["$resource", ($resource) ->
$resource "/admin/pages/:collectionRoute:id/:memberRoute",
{
id: "@id",
memberRoute: "@memberRoute",
collectionRoute: "@collectionRoute",
},
{
update: {method: "PUT"}
store_widgets: { method: "PUT", params: { data: "@data", memberRoute: 'store_widgets' }, isArray: true }
}
]
...并store_widgets
使用以下方法调用该函数:
Page.store_widgets(id: $scope.page_id, data: JSON.stringify(widgets) )
我已经尝试了一些设置数据参数的替代方法,但它似乎不起作用。它要么以纯字符串形式发布,[Object object]
要么以纯字符串形式发布。
关于如何让 $resource 发送的请求与使用纯 jQuery Ajax 的请求完全相同的任何建议?