使用变量名构建rails jbuilder json参数

时间:2012-08-06 23:50:29

标签: ruby-on-rails json jbuilder

我正在尝试使用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'
      }
    ]
  }

任何想法?

1 个答案:

答案 0 :(得分: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