2011-06-28 14 views
7

レールアプリでは、さまざまなモデルのコレクションのjson表現を返すアクションがあります。Rails 3 respond_to json、カスタムアトリビュート/メソッド付き

respond_to :json 

def index 
    @cars = Car.all 
    @vans = Van.all 
    respond_with({ 
    :cars => @cars, 
    :vans => @vans 
    }) 
end 

は、しかし、私はJSONオブジェクトに渡された属性とメソッドをカスタマイズしたい:それはこのような何かに見えます。以下のようなビット:私はこの間違った方法に近づいています明らかに

{ 
    "cars":"[{\"car\":{\"make\":\"Ford\" ... etc 
    "vans": [{"van":{"make":"Citreon" ... vans not escaped 
} 

:上記を行う

respond_with({ 
    :cars => @cars.to_json(:only => [:make, :model], :methods => [:full_name]), 
    :vans => @vans 
}) 

は、のように、一つの大きな文字列としてエスケープするための「車」のJSON表現を引き起こし。誰かが私を正しい方向に向けることができますか?

答えて

12

あなたが別のHashto_jsonを入れ子にしているので、私はあなたの代わりに、(代わりにStringHashを返す)as_jsonを使用する必要があると思う:

respond_with({ 
    :cars => @cars.as_json(:only => [:make, :model], :methods => [:full_name]), 
    :vans => @vans 
}) 
+0

は上のスポット!ありがとうございました。 (私が許されるとすぐにこの回答を受け入れます) – aaronrussell

関連する問題