在rails4中使用json jbuilder渲染json

时间:2014-05-27 21:16:31

标签: ruby-on-rails json ruby-on-rails-4 jbuilder

我有一个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

任何帮助将不胜感激!

1 个答案:

答案 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