2013-03-28 10 views
6

はのは、私はPersonクラスとギャングクラスIは、ビューからこのto_builderメソッドを使用するにはどうすればよいJBuilderビューからモデルのto_builderメソッドに委譲するにはどうすればよいですか?

class Person 
    belongs_to :gang 
    attr_accessible :name, :secret 

    def to_builder 
    Jbuilder.new do |app| 
     person.id id 
     person.name name 
    end 
    end 
end 

class Gang 
    has_many :people 
    attr_accessible :name 
end 

を持っているとしましょうか?例えば

#app/views/gang/show.json.jbuilder (@gang set by the controller) 

json.gang do |json| 
    json.name @gang.name 
    json.gang_members(@gang.people) do |person| 
    #how do I delegate to the person.to_builder here? 
    end 
end 

あなたは、私が今まで私は人にsecret属性をレンダリングしたくないので、デフォルトPerson.as_jsonを使用したくない心。

私が試したことのほとんどは、Person.to_builderではなくPerson.as_jsonに相当するレンダリングを終了しました。

答えて

6

Jbuilder#attributes!を使用できます。私は、

json.gang do |json| 
    json.name @gang.name 
    json.gang_members @gang.people.map { |person| person.to_builder.attributes! } 
end 
+5

トップレベルの1つのオブジェクトはどうでしょうか? gang_member#show.jsonアクションのように? –

2

を使用します。Jbuilder#merge!を使用して、人物作成者の属性をマージします。

関連する問題