オブジェクトを適切にレール 3.2 コントローラー アクションにシリアル化するために、Angular リソースを取得しようとしています。データ形式は 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 を使用して動作しているものとまったく同じにする方法についての提案はありますか?