2012-08-06 40 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