2

我正在尝试使用 jbuilder 从 rails 构建一些 json 输出。我有类似的东西:

  json.links do | i |
    i.array!( @links ) do | j, link |
      j.source link['source']
      j.target link['target']
      j.stats do | s |
        [ 'item1', 'item2' ].each { |item|
          s.item statistics_path( :source => link['source'], :metric => item )
        }
      end
    end
  end

当然,这会导致类似:

  {
    links: [
      source: "a",
      target: "b",
      stats: {
        item: 'url for item2'
      }
    ]
  }

当我真正想要类似的东西时:

  {
    links: [
      source: "a",
      target: "b",
      stats: {
        item1: 'url for item1',
        item2: 'url for item2'
      }
    ]
  }

有任何想法吗?

4

1 回答 1

7

您可以使用:

json.set!(:item1, "stuff")

在你的情况下:

  json.links do | i |
    i.array!( @links ) do | j, link |
      j.source link['source']
      j.target link['target']
      j.stats do | s |
        [ 'item1', 'item2' ].each { |item|
          s.set!(item, statistics_path( :source => link['source'], :metric => item ))
        }
      end
    end
  end
于 2012-08-07T09:51:55.893 回答