将属性映射为键:值并删除root id

时间:2017-05-22 07:50:45

标签: ruby-on-rails json ruby

当我渲染json时,我有一个看起来像这样的集合:

0:
   0:
      key: "A"
      random: 1
   1: 
      key: "B"
      random: 3
   2: 
      key: "Z"
      random: 25
   3: 
      etc.

密钥的值始终不同,不重复。

我想要的是将这两个属性的值作为键:value并删除root id,因此我想获得具有所有键:值对的数组而不是单独的对象。

它应该是这样的:

0:
   "A" : 1
   "B" : 3
   "Z" : 25

我如何在轨道上的红宝石中实现这一目标?

编辑: 控制器代码:

def index
  @data = RandomKey.select(:key, :random)
  render json: @data
end

2 个答案:

答案 0 :(得分:0)

您可以使用to_h

将其转换为哈希值
@data = RandomKey.pluck(:key, :random).to_h
render json: @data

答案 1 :(得分:0)

试试这个:

def index
  @data = RandomKey.select(:key, :random).map { |r| [r.key, r.random] }.to_h
  render json: @data
end