2012-08-06 38 views
2

我试图从使用jbuilder的rails构建一些json输出。我有类似:使用变量名构建rails 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' 
     } 
    ] 
    } 

什么想法?

回答

6

您可以使用:

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 
+0

像宣传的那样:) – yee379 2012-08-07 17:37:49