При автосохранении с помощью jQuery, как мне отправить форму для обновления, а не для создания после первого сохранения?

Дополнение к этому вопросу: какой способ RESTful сохранять черновики сообщений?

Мне интересно, созданные представления всегда подчиняются действию «создать» в рельсах. Как я могу сделать:

  1. Первое автосохранение создает запись
  2. Все последующие автосохранения обновляют сохраненную запись
  3. Окончательное представление обновляет ту же запись

Для получения информации сначала см. связанный вопрос. Кроме того, я делаю это в модели Post, где я добавил поле «черновик», которое может быть истинным или ложным. Мое представление jQuery:

 $(document).ready(function() {
    $('#new_post').append('<div class="temp"> </div>');
    setInterval(function() {

      { $('#new_post .temp').html('<input type="hidden" name="post[draft]" id="post_draft" value="true" />');
  draft = $('#draft');
}

      $('#post_form form[data-remote]').submit();

     $('#new_post .temp').html('');
      }, 1000*30); // 1000ms * 60s = 1m

 });

Этот файл создает скрытое поле «черновик», отправляет форму, а затем удаляет поле.

Кроме того, еще один файл, который может быть полезен, — create.js.erb. После отправки формы в контроллер вызывается и запускается этот встроенный файл ruby ​​javascript. В настоящее время я делаю переменную "draft" доступной для файла, так что:

 <% if draft %>
      #maybe putting code here can change the form to submit to "update" action next time?
 <% else %>
      # code that executes if it's a final submission, updating tables etc..
 <% end %>

Может быть, этот файл - место для выполнения моей задачи?

Если требуется дополнительная информация, дайте мне знать.


person jay    schedule 10.10.2011    source источник


Ответы (1)


Возможно, вы можете попробовать это: после того, как вы вернете идентификатор сообщения из первой отправки формы ajax, вы можете изменить последующую отправку формы, чтобы указать идентификатор сообщения и изменить метод формы с POST на UPDATE. Это должен быть спокойный способ запуска обновлений записей.

person Homan    schedule 10.10.2011
comment
эй, это (вероятно) сработало бы, ЕСЛИ вы могли бы использовать jQuery или встроенный javascript для замены элементов в тегах html формы (например, в ‹form accept=charset=UTF-8 action=/posts class=new_post ...> изменить действие, класс и т.д.. Вы можете это сделать? - person jay; 11.10.2011
comment
взгляните на плагин jQuery JSON-REST. plugins.jquery.com/project/Rest. Сопоставляет вызовы CRUD ($.Create, $.Read, $.Update и $.Delete) с методами http (POST, GET, PUT и DELETE) через вызовы jQuery.ajax(). - person Homan; 11.10.2011
comment
хм... ну, интересно - я не уверен, что это сделает то, что мне нужно..? - person jay; 11.10.2011
comment
нашел ответ в чужом сообщении, если кому-то интересно, чтобы изменить эти атрибуты, вы используете функцию attr jQuery. - person jay; 13.10.2011