2

ユーザーがフォームを送信したときに実行されるRailsコントローラーメソッドがあるとします。ここで、ユーザーはフォームを送信し、メソッドの実行中(およびユーザーに次のページをレンダリングしていないとき)に、ユーザーは[更新]をクリックします。何が起こるのでしょうか?メソッドの実行を停止して再起動しますか、それともメソッドをもう一度実行するための別のスレッドがありますか?

4

1 に答える 1

1

私はこれに対する答えを自分で見つけなければなりませんでした、これが私が見つけたものです(クロームインスペクターのネットワークタブを使用して)

ブラウザは次のリクエストを送信します。

  • GET / profile / 123 / edit(ユーザーが編集フォームを表示します)
  • PUT / profile / 123(ユーザーがフォームを送信)

ユーザーが更新を押すと、次の原因になります。

  • GET / profile / 123 / edit

つまり、フォームを再送信するのではなく、編集フォームを再起動します。

さて...更新を押す代わりに、もう一度送信を押すと、2番目の送信が行われます

  • PUT / profile / 123

これにより、コントローラーメソッドが2回呼び出されます。

それが問題である場合は、後続の送信を無視または処理するためのロジックを追加する必要がある場合があります(単純なステートマシン?)。あなたが何かを購入した後、eコマースサイトが「2回送信を押さないでください」のようなメッセージを持っていた時代を思い出してください...彼らはその論理を持っていませんでした:)

于 2012-11-02T03:48:57.447 に答える