Удалить / изменить записи базы данных из панели EditorGrid - PullRequest
0 голосов
/ 18 апреля 2011

Я использую ExtJs с Rails 3.x. Как удалить / изменить записи из EditorGrid, используя метод Ext.Ajax.request?

Я пытался использовать store.remove() и другие подобные методы, но он не удаляет записи из базы данных.

Спасибо заранее !!

Код:

    //** Destroy method **//

         def destroy
            puts 'destroy'
            @unit = Unit.find(params[:id])
            puts 'will destroy'
            @unit.destroy
            puts 'destroyed'
         end

    //** units.js **//

    var delbtn = Ext.getCmp('btnDelete');
                 delbtn.on('click',function(){

                     var grid = Ext.getCmp('maingrid');
                     var selection = grid.getSelectionModel().getSelected();
                     Ext.Ajax.request({
                     url: '/units/destroy',
                     method: 'POST',
                     params: {
                     'id' : selection.data.id }

                    });

                });//end del function

//** Store.js **//
Ext.data.Api.restActions = {
            create  : 'POST',
            read    : 'GET',
            update  : 'PUT',
            destroy : 'DELETE' };
storeId: 'MyUnitStore',
            root: 'data',
            autoLoad: true,
            autoSave: false,
            //batch: true,
            restful:true,
            writer: new Ext.data.JsonWriter({
                encode : false,
                listful:false,

                destroy: '/units/destroy',
                update : '/edit'
            }),
             url: '/units.json',
                fields: [
                {
                    name: 'unitname'
                },
                {
                    name: 'description'
                }
                 ]

//** Edit Button **//
var store = Ext.getCmp('maingrid').getStore();                 
                 store.update();

1 Ответ

1 голос
/ 18 апреля 2011

store.remove() удаляет данные (записи) только из магазина, ассоциированного с вашей сеткой.Он не связывается со стороной сервера сам по себе.Вам нужно использовать Ajax-запрос и общаться с Rails 3.x, чтобы удалить соответствующую запись.

var selection = grid.getSelectionModel().getSelected();
Ext.Ajax.request({
    url: '/ExampleController/Delete',
    method: 'POST',
    params: {
        'id': selection.data.id
    },
    success: function(result, request){
        // Refresh the grid store and display
    },
    failure: function(result, request){
        // Display delete error message
    }
}
...