私はmightygioの例に従っています(http://mightygio.com/2013/05/integrating-rails-and-angularjs-part-3-rest-and-angular-resource)そして更新時にpostDataを単純化したいと思います。
現在私はこれを持っています
$scope.update = ->
Letter.update
id: $stateParams["id"]
,
letter:
subject: $scope.letter.subject
body: $scope.letter.body
# success
, (response) ->
$location.path "/letters"
# failure
, (response) ->
大量のデータを含む大きなフォームがある場合、これはかなり長くなり、保守が困難になります。次のように$ scope.letterを渡すことができればもっといいでしょう:
$scope.update = ->
Letter.update
id: $stateParams["id"]
,
letter: $scope.letter
# success
, (response) ->
$location.path "/letters"
# failure
, (response) ->
私が抱えている問題は、created_at、id、updated_atキーを更新するときに、特定の属性をバックエンドに渡せないことです。
JSONをサーバーに送信する前にこれらのキーを削除するにはどうすればよいですか?
更新
このようなものを使用できると思いますが、もっと良い方法はありますか?
$scope.update = ->
letter = {}
# Strip out id, created_at & updated_at
angular.forEach($scope.letter, (value,key) ->
if(key!="id" && key!="created_at" && key!="updated_at")
letter[key]=value
,letter)
Letter.update
id: $stateParams["id"]
,
letter: letter
# success
, (response) ->
$location.path "/letters"
# failure
, (response) ->
回答:
回答№1は0次のような有名でパフォーマンスの高いユーティリティライブラリを使用することを強くお勧めします。 Lo-Dash または アンダースコア。これらのいずれかを使用すると、キーのホワイトリストを含めるか、ブラックリストに登録されたキーのリストを除外するかを簡単に選択できます。
ホワイトリストの例:
_.pick({name: "moe", age: 50, userid: "moe1"}, "name", "age");
=> {name: "moe", age: 50}
ブラックリストの例:
_.omit({name: "moe", age: 50, userid: "moe1"}, "userid");
=> {name: "moe", age: 50}
PSあなたがよく知られているを使用する場合 矩形 ライブラリはすでにLodash(またはアンダースコア)に依存しているため、決定はさらに簡単になります。