在Ruby on Rails中向JSON数组追加元素

3
我正在使用backbone.js作为前端,从控制器接收到如下的JSON结果:
def index
    myEntry = Entry.all
    respond_with myEntry.to_json()
end

生成的JSON数组是以下对象的集合。
0:Object
  id:1
  name:matz
1:object
  id:2
  name: hilary

现在我使用act-as-taggable-on gem为每个名称添加了一个额外的标签字段。要访问任何条目的标签,我需要使用Entry.find(1).tag_list.

我想将每个标签的结果附加到上面相应的对象中,以获得如下结果

0:Object
  id:1
  name:matz
  tag:friend,rich
1:object
  id:2
  name: hilary
  tag:intelligent
2个回答

2

@dimakura给出了完美的答案。但是,如果你想将一些与你的结果没有直接联系的内容包含在你的json数组中,或者出于更复杂的原因,这里有另一种方法:

  • 创建一个空数组
  • 循环遍历你的结果数组
    • 在每个循环中,将所需哈希值附加到数组中
  • 返回转换为json的数组

示例代码

myEntry = Entry.all
myhash = []
myEntry.each do |index|
   myhash << {name: index.name,tag_list: index.tag_list}
end

respond_with myhash.to_json

2
这应该适用于您:
render json: User.all.to_json(include: :tags)

或者(只有标记名称):
render json: User.all.to_json(methods: :tag_list)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接