2011-06-23 59 views
1

我現在有一個控制器返回JSON對象,看起來像這樣:Rails 3 - 返回包裝在單個對象中的JSON對象?

def getModels 
    @vehicleModels = @vehicleModels.where(:vehicleMake_id => params[:vehicleMake]) 
    respond_with(@vehicleModels) 
end 

這工作得很好,並返回以下JSON:

[ 
{"created_at":"2011-06-22T15:49:06Z","id":1,"name":"A4","updated_at":"2011-06-22T15:49:06Z","vehicleMake_id":1}, 
{"created_at":"2011-06-22T15:49:06Z","id":2,"name":"A5","updated_at":"2011-06-22T15:49:06Z","vehicleMake_id":1}, 
{"created_at":"2011-06-22T15:49:06Z","id":3,"name":"A6","updated_at":"2011-06-22T15:49:06Z","vehicleMake_id":1}, 
{"created_at":"2011-06-22T15:49:06Z","id":4,"name":"A8","updated_at":"2011-06-22T15:49:06Z","vehicleMake_id":1}, 
{"created_at":"2011-06-22T15:49:06Z","id":5,"name":"TT","updated_at":"2011-06-22T15:49:06Z","vehicleMake_id":1}, 
{"created_at":"2011-06-22T15:49:06Z","id":10,"name":"Touareg","updated_at":"2011-06-22T15:49:06Z","vehicleMake_id":1} 
] 

的問題是,JQuery的下拉我試圖加載JSON到似乎期待一個JSON根節點。因此,直接加載JSON不起作用。但是,如果它有一個根節點,如下所示,它工作正常:

{"results":[ 
{"created_at":"2011-06-22T15:49:06Z","id":1,"name":"A4","updated_at":"2011-06-22T15:49:06Z","vehicleMake_id":1}, 
{"created_at":"2011-06-22T15:49:06Z","id":2,"name":"A5","updated_at":"2011-06-22T15:49:06Z","vehicleMake_id":1}, 
{"created_at":"2011-06-22T15:49:06Z","id":3,"name":"A6","updated_at":"2011-06-22T15:49:06Z","vehicleMake_id":1}, 
{"created_at":"2011-06-22T15:49:06Z","id":4,"name":"A8","updated_at":"2011-06-22T15:49:06Z","vehicleMake_id":1}, 
{"created_at":"2011-06-22T15:49:06Z","id":5,"name":"TT","updated_at":"2011-06-22T15:49:06Z","vehicleMake_id":1}, 
{"created_at":"2011-06-22T15:49:06Z","id":10,"name":"Touareg","updated_at":"2011-06-22T15:49:06Z","vehicleMake_id":1} 
]} 

所以,問題很簡單 - 我怎樣才能軌包括根節點?

我應該指出,我試圖通過在我的配置中設置ActiveRecord::Base.include_root_in_json = true來做到這一點,但只是將根節點添加到每個單獨的對象,而不是我需要的一個整體根節點。

謝謝!

回答

3

你可以做以下

respond_with { :results => @vehicleModels } 
+0

完美的作品,謝謝! –

+0

我們可以使用'to_json'選項來精細控制json輸出嗎? – baxang