5

我正在使用 RABL gem 为评论的用户呈现 JSON 用户数据,这些评论是图像的子级注释的子级。我想做类似的事情:

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

我知道这在 RABL 中无效,我也尝试使用子节点而不是节点,但无法以这种方式访问​​用户数据。我应该如何做这件事以及实现这一点的正确语法是什么?

4

1 回答 1

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
于 2012-02-24T18:05:18.030 回答