我有一个rails4应用程序,其中一个控制器在我的控制器中有一个变量@data
,如下所示:
@data = {
2013 => {sal: 1000, exp: 400},
2014 => {sal: 1170, exp: 460},
2015 => {sal: 660, exp: 1120},
2016 => {sal: 1030, exp: 540}
}
我已经关联了json jbuilder文件,我想用它在这个结构中渲染json
[
['Year', 'Sales', 'Expenses'],
['2013', 1000, 400],
['2014', 1170, 460],
['2015', 660, 1120],
['2016', 1030, 540]
]
我在看https://github.com/rails/jbuilder,但无法弄清楚如何实现我的目标。
这没有帮助..
json.array! @data do |d|
???
end
任何帮助将不胜感激!
答案 0 :(得分:0)
我猜jbuilder不适合你的目的。你想要数组,它返回哈希值。
可以通过以下方式完成:
@data = {
2013 => {sal: 1000, exp: 400},
2014 => {sal: 1170, exp: 460},
2015 => {sal: 660, exp: 1120},
2016 => {sal: 1030, exp: 540}
}
@mod_data = [['Year', 'Sales', 'Expenses']]
@data.each { |k, v| @mod_data << [k, v[:sal], v[:exp]] }
# or briefly, but perhaps less readable
@data.each_with_object([['Year', 'Sales', 'Expenses']]) { |(k, v), o| o << [k, v[:sal], v[:exp]] } # returns array