2

jbuilderを使用してレールから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 に答える