2012-02-24 12 views
5

私はRABL gemを使って、画像の子である注釈の子であるコメントのユーザーのJSONユーザーデータを表示しています。私はに似て何かをしたい:私はこれがRABLでは有効ではありません知っているRailsの深いネスティングRABL

object @image 

node :annotations do 
    @image.annotations.map { |a| { 
    :id => a.id, 
    :x1 => a.x1, 
    :x2 => a.x2, 
    :y1 => a.y1, 
    :y2 => a.y2, 
    node :comments do 
     @image.annotations.comments.map { |c| { 
     :body => c.body, 
     :user_id => c.user_id, 
     :name => User.find(c.user_id).name, 
     :user_icon => user_icon(User.find(c.user_id), 'square', 30) 
     }} 
    end 
    }} 
end 

を、私はまた、代わりにノードの子を使用してみましたが、そのようにユーザーのデータにアクセスすることができませんでした。これを行うにはどうしたらいいですか?これを実現するための正しい構文は何ですか?

答えて

8

私はこの回答を@calvin-lから得ました。そのトリックは、a.commentsをマップして、各コメントのデータを次のように取得することでした。

node :annotations do 
    @image.annotations.map { |a| { 
    :id => a.id, 
    :x1 => a.x1, 
    :x2 => a.x2, 
    :y1 => a.y1, 
    :y2 => a.y2, 
    :comments => a.comments.map { |c| { 
     :body => c.body, 
     :created_at => c.created_at, 
     :user => { 
     :id => c.user.id, 
     :facebook_id => c.user.facebook_id, 
     :name => c.user.name, 
     :username => c.user.username 
     } 
    }} 
    }} 
end 
+0

+1。ブロック内にハッシュを作成するこの方法は、いくつかの行を節約しますが、それはやや混乱します(そして一元的なものです)。私はそれを更新しようとしていたが、まあ、それはあまりにも悪くないと思う。 – tokland

関連する問題