AJAX

2013-02-20 14 views
6

ile Rails'te bir formun otomatikleştirilmesi Post # new eylemi için bir formu otomatik kaydetmeye çalışıyorum. Her dakika ya da öylesine, POST to Post # autosave yapmak istiyorum ve sonra first_or_create için kontrol edeceğim ve Kayıtlar tablosundaki kaydı kaydedeceğim/güncelleyeceğim. Benim sorunum olsa, artık POST param formuna formdan erişemiyorum. Öyle gibi yapmak çalışıyorum: aksiyon ve: kontrolörAJAX

post 'posts/autosave', as: :autosave_post_path 

sorundur, sunucusu günlük parametreler sadece içerdiği karma gösterir:

$(function() { 
    if ($("#new_post").length > 0) { 
    setTimeout(autoSavePost, 60000); 
    }  
}); 

function autoSavePost() { 
    $.ajax({ 
    type: "POST", 
    url: "/posts/autosave", 
    dataType: "script", 
    success: function(data) { 
     console.log(data); 
    } 
    }); 
    setTimeout(autoSavePost, 60000); 
} 

Ben bu yolu var. POST verilerinin bir parçası olarak gönderilmiş olanların eşdeğerine nasıl erişebilirim.

cevap

12

Sen serialize yöntemle, hem data param geçmesi gerekiyor:

$.ajax({ 
    type: "POST", 
    url: "/posts/autosave", 
    data: $("#new_post").serialize(), 
    dataType: "script", 
    success: function(data) { 
    console.log(data); 
    } 
}); 
+0

Erkeksin! Çok teşekkürler. Bağladığınız dokümanlara baktım, tam olarak ne yaptığına dair net değil, özetleyebileceğiniz daha derin bir anlayışa sahip olma ihtimaliniz var mı? Tekrar teşekkürler. – mackshkatz

+2

".serialize() yöntemi, standart URL kodlu gösterimde bir metin dizesi oluşturur.", Yani, form içeriğini "param1 = değer1 & param2 = değer2 & ... & paramN = değerN" olarak serileştirir, daha sonra Rails bir nesneyi yeniden sınıflandırır. . – moonwave99

+1

@mackshkatz Formunuzdaki tüm form öğelerinin üzerinde döngü oluşturmak ve bir uzun dizeye gönderilecek verileri toplamak için serileştirmeyi düşünebilirsiniz. Bu daha sonra POST isteğinde ray denetleyicinize gönderilir. Bir GET isteği olsaydı, form alanlarında girilen değerlere göre sizin için sorgu dizesi oluşturmanın karşılığı olurdu. – ChrisC