2011-07-11 18 views
1

私はコードをDRYにするためにas_jsonを学ぶことができてとても嬉しく思います。モデルに以下を追加しました:Rails 3:追加の行でas_json応答を折り返す

class ProductType < ActiveRecord::Base 
    has_many :component_types 

    def as_json(parameter) 
    {:name => self.name, 
    :description => self.description, 
    :children => self.componentTypes} 
    end 
end 

これは素晴らしいです。

{ 
    "identifier": "name", 
    "label": "name", 
    "items": 
    [ 
     { 
     "name": "myName1", 
     "description": "myDesc1", 
     "children":[] 
     }, 
     { 
     "name": "myName2", 
     "description": "myDesc2", 
     "children":[] 
     } 
    ] 
} 
+0

私はDIYと思われるものを理解していません: 'myModelsChildren'とは何ですか? – apneadiving

+0

は適切な名前を表示するための質問を更新しました...私はそれを一般的にしておきたいと思いました。しかしそこにはあなたがいます。 'product_type'(上記のモデル)と' component_type'の間には1対多の関係があります。 – Paul

答えて

2

制限の多くは、にあります唯一の事は、私のクライアント側のアプリケーションのために、私は(「アイテム」はas_jsonによって作成されたものが含まれている)、私はこのフォーマットに入る応答をラップする必要があるということですas_jsonをオーバーライドしてください。その問題はその1つです。私はRABL宝石を見て、あなたの目標を達成するのに役立つと思います。

+0

それはクールに見えますが、私は実際には 'as_json'ととても近いので、システムにもっと多くの宝石を追加しなくても簡単な方法でラッピングすることができます。 – Paul

関連する問題