0

この質問のフォローアップ:下書きの投稿を保存するための RESTful な方法は何ですか?

作成された送信は常にレールの「作成」アクションに送信されるのではないかと思っています。どうやって作ることができますか:

  1. 最初の自動保存はエントリを作成します
  2. 後続のすべての自動保存により、保存されたエントリが更新されます
  3. 最終提出は同じエントリを更新します

詳細については、まず関連する質問を参照してください。また、私は Post モデルでこれを行っており、true または false のフィールド「ドラフト」を追加しました。私の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 ファイルが呼び出されて実行されます。現在、次のような変数「ドラフト」をファイルで使用できるようにしています。

 <% 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 %>

たぶん、このファイルは私のタスクを達成するための場所ですか?

さらに情報が必要な場合は、お知らせください。

4

1 に答える 1

1

多分あなたはこれを試すことができます: 最初の ajax フォーム送信から投稿 ID を取得した後、後続のフォーム送信を変更して投稿 ID を提供し、フォーム メソッドを POST から UPDATE に変更できます。これは、レコードの更新をトリガーする安らかな方法である必要があります。

于 2011-10-10T21:41:58.000 に答える