使用变量名称构建 Rails jBuilder JSON 参数



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

有什么想法吗?

您可以使用:

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

最新更新