Я использую предварительный просмотр ExtJS 4, но он должен работать так же с Sencha Touch.Ваша проблема может быть связана с вложением возвращенного json.Вот что работает для меня.
В контроллере Rails:
def index
respond_with @entries = Entry.all do |format|
format.json { render :json => {:success => true, :data => @entries, :total => @entries.count} }
end
end
def show
respond_with @entry = Entry.find(params[:id]) do |format|
format.json { render :json => {:success => true, :data => [@entry]} }
end
end
def create
respond_with @entry = Entry.create(params[:records][0]) do |format|
format.json { render :json => {:success => true, :data => [@entry]} }
end
end
def update
@entry = Entry.find(params[:id])
@entry.update_attributes(params[:records][0])
respond_with @entry do |format|
format.json { render :json => {:success => true, :data => [@entry]} }
end
end
Модель ExtJS:
Ext.regModel("Entries", {
fields: [
{name: "id", type: "int"},
{name: "title", type: "string"},
{name: "bought", type: "boolean"},
],
proxy: {
type: 'rest',
url: '/lists',
format: 'json',
reader: {
type: 'json',
root: 'data',
record: 'entry'
}
}
});
Два отличия от того, что вы сделали:
1 / Опция записи в Reader указывает ExtJS искать вложенные записи в json.Он говорит, что нужно искать:
data: [
{
entry: {
id: 1,
title: "Title 1",
bought: true
}
}
]
вместо:
data: [
{
id: 1,
title: "Title 1",
bought: true
}
]
Альтернативой настройке свойства записи в ридере может быть отключение вложенного json в Rails путем сброса этогов конфигурацию вашего приложения:
config.active_record.include_root_in_json = true
2 / При возврате одной записи вывод json должен быть таким же, как коллекция, за исключением того, что у вас есть только одна запись.
Sencha Touch иДокументация по ExtJS 4 иногда бывает немного скудной, и я обнаружил, что разбирать примеры - лучший способ научиться.
HTH