Search code examples
jqueryruby-on-railsajaxpost-parameter

Autosaving a form in Rails with AJAX


I am trying to autosave a form for the Post#new action. Every minute or so, I want to POST to Post#autosave and then I'll check for first_or_create and save/updated the record in the Posts table. My problem though is, I can no longer access the POST params from the form. I am trying to do it like so:

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

I have this route:

post 'posts/autosave', as: :autosave_post_path

The problem is, the server log shows the params hash as only containing :action and :controller. How can I access the equivalent of what would have been sent as part of the POST data.


Solution

  • You need to pass the data param as well, via serialize method:

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