2009-06-29 54 views
2

我有一些基於廢棄的PHP框架構建的現有項目,我希望能夠以最小的努力將它們轉移到Ruby on Rails上。我的主要問題,現在是,JSON是回來格式爲我的前端代碼(所有的ExtJS)格式期待JSON:如何從ExtJS的Ruby on Rails中讀取JSON

{ 
    "result": [ 
     [id: 1, name: "mike"], 
     [id: 2, name: "john"], 
     [id: 3, name: "gary"] 
    ] 
} 

但是從Ruby on Rails的默認返回如下:

{ 
    "result": [ 
     {"record" : {id: 1, name: "mike"}}, 
     {"record" : {id: 2, name: "john"}}, 
     {"record" : {id: 3, name: "gary"}} 
    ] 
} 

我的控制器,基本上是做什麼,但:

@records = Record.find(:all) 
respond_to do |format| 
    format.json { render :text => @records.to_json} 
end 

正如你所看到的,它是在增加一個額外的關鍵每條記錄,其中我的前端ExtJS的代碼是不能夠按原樣解析。有什麼辦法可以阻止這種情況發生?

感謝您可以提供任何幫助,

邁克Trpcic

+3

[ID:1,名稱: 「邁克」],這不是有效的JSON。 – 2009-06-29 01:44:17

回答

2

這個問題現在可以被關閉,但我覺得它相關的是,我張貼任何人在未來誰運行到相同的情況下的解決方案。你可以使用下面的插件:Ext Scaffold Generator。即使您不希望使用腳手架功能,它也會添加一個額外的「to_ext_json」方法,該方法輸出的JSON默認可以由ExtJS讀取。

感謝任何人查看此事並試圖幫助我。

2

您也可以嘗試:

@records = Record.find(:all) 
respond_to do |format| 
    format.json { render :json => @records.map {|r| r.attributes } } 
end 
2

下面是對我的作品的模式:

format.json { render :json => { 
      :rows => @data_array, 
      :results => @data_array.length 
     }, :callback => params[:callback]} 

HTH