Javascript 如何使用ExtJS从RubyonRails读取JSON
我有一些现有的项目是建立在一个不推荐使用的PHP框架上的,我希望用最少的努力将它们转移到RubyonRails上。我现在的主要问题是JSON返回的格式。我的前端代码(所有ExtJS)需要JSON格式:Javascript 如何使用ExtJS从RubyonRails读取JSON,javascript,ruby-on-rails,ruby,json,extjs,Javascript,Ruby On Rails,Ruby,Json,Extjs,我有一些现有的项目是建立在一个不推荐使用的PHP框架上的,我希望用最少的努力将它们转移到RubyonRails上。我现在的主要问题是JSON返回的格式。我的前端代码(所有ExtJS)需要JSON格式: { "result": [ [id: 1, name: "mike"], [id: 2, name: "john"], [id: 3, name: "gary"] ] } 但是Ruby on Rails的默认返回如下: {
{
"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代码无法按原样进行解析。有没有办法阻止这种事情发生
谢谢你的帮助
Mike Trpcic这个问题现在可以结束了,但我觉得我应该为将来遇到同样情况的任何人发布解决方案。您可以使用以下插件:。即使您不希望使用scaffold功能,它也会添加一个额外的“to_ext_json”方法,该方法输出默认情况下可由ExtJS读取的json 感谢所有调查此事并试图帮助我的人。您也可以尝试:
@records = Record.find(:all)
respond_to do |format|
format.json { render :json => @records.map {|r| r.attributes } }
end
以下是一个适合我的模式:
format.json { render :json => {
:rows => @data_array,
:results => @data_array.length
}, :callback => params[:callback]}
基本上:
ActiveRecord::Base.include_root_in_json = false
或
如本文所述:[id:1,名称:“mike”],这不是有效的JSON。
YourClass.include_root_in_json = false