2013-02-20 9 views
6

Próbuję automatycznie zapisać formularz dla akcji Post # new. Co minutę, chcę POST, aby opublikować # autozapisywanie, a następnie sprawdzę najpierw_lub_czas tworzenia i zapisz/zaktualizuję rekord w tabeli Postów. Mój problem polega jednak na tym, że nie mogę już uzyskać dostępu do parametrów POST z formularza. Staram się zrobić to tak:Automatyczne zapisywanie formularza w Railsach za pomocą AJAX

$(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); 
} 

mam tę drogę:

post 'posts/autosave', as: :autosave_post_path 

Problem polega na tym, log serwera pokazuje hash params jako jedyny zawierający: akcja oraz: kontrolera. Jak uzyskać dostęp do odpowiednika tego, co zostałoby wysłane w ramach danych POST.

Odpowiedz

12

Trzeba zdać data param jak również, poprzez serialize metody:

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

Ty jesteś tym człowiekiem! Dzięki wielkie. Przejrzałem dokumenty, które łączyłeś, nie jestem pewien, co dokładnie robisz, czy masz szansę na głębsze zrozumienie, które mógłbyś streścić? Dzięki jeszcze raz. – mackshkatz

+2

"Metoda .serialize() tworzy ciąg tekstowy w standardowej notacji zakodowanej za pomocą adresu URL.", Tzn. Serializuje treść formularza jako "param1 = wartość1 i parametr2 = wartość2 i ... & parametrN = wartośćN", a następnie Railsy zostają unserializowane z powrotem do obiektu . – moonwave99

+1

@mackshkatz Można pomyśleć o serializacji jako zapętleniu wszystkich elementów formularza w formularzu i zebraniu danych, które zostaną przesłane w jeden długi ciąg. Zostanie to wysłane w żądaniu POST do kontrolera szyn. Jeśli byłaby to prośba GET, byłaby odpowiednikiem utworzenia dla ciebie ciągu zapytania, w oparciu o wartości wprowadzone w polach formularza. – ChrisC

Powiązane problemy