2013-07-11 22 views
6

は、私がモデルとネストされたモデルを備え、以下のフォームを持っていると言う:私はこの場合、レールには(サーバ側で期待してい何投稿での扁平な平面モデル

Restangular.all('companies').post($scope.company); 

:私はこのような投稿

<label>Company Name</label> 
<input type="text" ng-model="company.name" /> 

<label>Owner Name</label> 
<input type="text" ng-model="company.owner.name" /> 

)このようなネストされたハッシュものです:

company: 
    name: Test Company 
    owner: 
     name: Test Owner 

しかし、私は取得していますがこのです:

name: Test Company 
company: 
    name: Test Company 
owner: 
    name: Test Owner 

モデルがフラット化されているように見えます。また、最初のモデルのフィールドもスコープ外で繰り返されているようです。

ネスティングを維持しながら、モデルフィールドをハッシュ内のスコープの外側で繰り返さないようにするにはどうすればよいですか?

答えて

1

私はRestangularの作成者です。

console.log $ scope.companyの出力はありますか?

脚注は何も浮かんでいません。パラメータとして指定した正確なJSonを送信するだけなので、$ scope.companyの出力が何であるかを確認する必要があります。

その後、さらに確認できます。

また、リクエストのペイロードの[ネットワーク]タブを確認しましたか?大丈夫ですか?

+0

これはコメントとしてはるかに適していますが、実際の問題に対する答えではありません。デバッグは不可欠ですが、デバッグの手順だけでは解決策にはなりません。 – Makoto

+0

合意。ごめんなさい。次回は、答えを追加する代わりにこれをコメントします! – mgonto

+0

@mgonto:あなたは絶対に正しいです。"postData":{"mimeType": "application/json; charset = UTF-8"、 "text": "{\"} "、"これは値が送信されていることを意味しています。 "\"所有者\ ":\" Mr Smith \ "}}" – matthewrk

0

私は、この質問を見つける他の誰かのためにこれを明確にする必要があると感じています。 $scope.companyを渡す

は、スコープ変数自体の名前が含まれていませんcompanyあるJSオブジェクトを渡します。

{ 
    name: 'Test Company', 
    owner: { 
     name: 'Test Owner' 
    } 
} 

サーバは 'の値を持つ文字列であるnameという名前のPOST変数としてこれを見ることができます試験会社「の値とname名前インデックスを持つ配列であるownerという別の変数」はこのあろうPHPで試験Owner`

$_POST['name']; // would = 'Test Company' 
$_POST['owner']; // would = array('name'=>'Test Owner') 

あなたはそれがサーバ側はcompanyと呼ばれる上のプロパティの配列になりたいなら、あなたは「会社」というタイトルプロパティでJSオブジェクト自体に$scope.companyをカプセル化する必要があります。今すぐ

$scope.company = { 
    company: { 
     name : 'Test Company', 
     owner : { 
      name : 'Test Owner' 
     } 
    } 
}; 

サーバ側では次のようになります。

$_POST['company']; // would = array('name'=>'Test Company','owner'=>array('name'=>'Test Owner')) 
関連する問題