2015-09-09 66 views
2

我正在與Backbone.js的作爲接收一個JSON結果從控制器這樣追加到JSON數組在Ruby on Rails的

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

這應該爲你工作:

render json: User.all.to_json(include: :tags) 

或可替代(只是標籤名稱):

render json: User.all.to_json(methods: :tag_list) 
+0

第二個工作完美 – coderVishal

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