用Json更新Rails模型

时间:2012-12-30 16:36:03

标签: ruby-on-rails ajax json jquery

目前,我正在实现一个包含项目(slot_allocations)的表。这些项目基于Rails模型。 可以拖放表格中的项目。

现在,我能够在表格中检索并显示模型的数据。 然而,在成功将项目拖放到新单元格中之后,我还想更新模型中的信息,并希望就如何进行此操作寻求建议。

我目前能够根据以下Jquery代码将信息放入数组中。

 var slot_allocation= []; //array storing info
 $.getJSON('slot_allocations', function(data) { //get json method, put the items in the slot_allocation array.
    $.each(data, function(i, item) {
    slot_allocation.push(item);
 });

 //some extra methods for table creation etc.
 createSubjectsTable($("#subjects"),timeslots,subjects);
 makeDraggable();
 });

对于我可以查看哪些JQuery方法或者我可以更改代码的哪些区域以更新模型,我将不胜感激。提前谢谢。

要求的附加代码。整个代码虽然很长。这是放弃它之后应该更新模型的部分。我更新数组的尝试是评论后的代码。

$('.Empty').droppable({
  accept: '.Group',
  tolerance: 'pointer',
  drop: function(event,ui){
    ui.droppable = $(this);
    var new_alloc_info = ui.droppable.attr("id")
    var array = new_alloc_info.split('--');
    var timeslot = array[1];
    var subject = array[2];

    var old_alloc_id = ui.draggable.attr("id");
    var array2 = old_alloc_id.split('--');
    var alloc_id = array2[3];

//This is the part where I want to update the rails model
    slot_allocation[alloc_id-1].timeslot=timeslot; 
    slot_allocation[alloc_id-1].subject=subject;        

    var allocText = "alloc--"+timeslot+"--"+subject+"--"+alloc_id;
    ui.draggable.attr("id",allocText);
    ui.draggable.insertBefore(ui.droppable);

  }
})

1 个答案:

答案 0 :(得分:1)

行。在drop回调中,您可以向服务器发出AJAX请求。没有试图找出你的所有数组将从简单的情况

开始
/* receive id and time params at server as you would form field "name" */ 
var dataToServer={ id: alloc_id, time: timeslot};

/* can use $.get or */
$.post( url, dataToServer, function( response){
    /* AJAX completed successfully, can access response data here*/
}/* dataType argument here if want to use JSON or XML response*/)

$.post$.get都是$.ajax的快捷方式,可根据需要提供多种选项

jQuery AJAX API:http://api.jquery.com/category/ajax/