【问题标题】:Rendering json using json jbuilder in rails4在rails4中使用json jbuilder渲染json
【发布时间】:2014-07-16 22:29:12
【问题描述】:

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

任何帮助将不胜感激!

【问题讨论】:

  • 我认为这不是渲染 json 数组的好方法。 Hashes 是一种更简洁、更有意义的方式,我会渲染 @data 而不是数组样式。
  • 不确定downvoter,因为downvoting背后的原因是什么?

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


【解决方案1】:

我猜 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

【讨论】:

  • 我可以很好地将我的哈希转换为数组。但这不是我要找的。我想让 jbuilder 做这个 json 构建。所以你是说在 jbuilder 中没有办法做到这一点?
  • 我不确定 100%,也许有人会提供另一个答案。
猜你喜欢
  • 1970-01-01
  • 2013-10-06
  • 2014-02-18
  • 2013-01-04
  • 1970-01-01
  • 1970-01-01
  • 2019-08-01
  • 2012-11-24
  • 2016-04-29
相关资源
最近更新 更多