Sencha Model.save отправляет /0.json на сервер - PullRequest
0 голосов
/ 03 марта 2011

У меня есть следующий код, который должен создать новый элемент.Тип прокси - REST.

var inst = Ext.ModelMgr.create({
                    title: values.title
                }, "EntriesModel");

                inst.save({
                    success: function(model) {
                        console.log(model);
                    }
                });

После сохранения () я вижу, что запрос отправлен на http://localhost:3000/entries/0.json,, в то время как я предполагаю, что он должен был быть отправлен на http://localhost:3000/entries

Модель записей выглядит так:

Ext.regModel("EntriesModel", {
fields: [
    {name: "id",             type: "int"},
    {name: "title",           type: "string"},
    {name: "list_id",       type:"int"},
    {name: "bought",         type: "boolean"},
],

proxy: {
    type: 'rest',
    url: '/entries',
    format: 'json',
    noCache: true,
    reader: {
        type: 'json',
        root: 'data'
    },
    writer: {
        type: 'json'
    },
    listeners: {
        exception: function (proxy, response, operation) {
            console.log(proxy, response, operation);
        }
    }
}
});

Backend - это Rails.

Ответы [ 2 ]

0 голосов
/ 03 марта 2011

Посмотрите, как строится ссылка для Прокси-сервера отдыха:

buildUrl: function(request) {
    var records = request.operation.records || [],
        record  = records[0],
        format  = this.format,
        url     = request.url || this.url;

    if (this.appendId && record) {
        if (!url.match(/\/$/)) {
            url += '/';
        }

        url += record.getId();
    }

    if (format) {
        if (!url.match(/\.$/)) {
            url += '.';
        }

        url += format;
    }

    request.url = url;

    return Ext.data.RestProxy.superclass.buildUrl.apply(this, arguments);
}

Переопределите это, чтобы обеспечить дальнейшие настройки, но не забудьте вызвать суперкласс buildUrl

0 голосов
/ 03 марта 2011

Попробуйте прочитать это http://dev.sencha.com/deploy/touch/docs/?class=Ext.data.RestProxy и пример:

    new Ext.data.RestProxy({
    url: '/users',
    format: 'json'
}); 
// Collection url: /users.json 
// Instance url  : /users/123.json
...