0

私は Ajax を使用した基本的な Rails アプリケーションを持っています (私はこの優れたRailscast チュートリアルに従いました)

新しいレコードの作成時に、:remote => true を使用して ajax 呼び出しを行うため、フローは次のようになります。

ユーザーが [送信] > [Ajax 呼び出し] > [新しいレコードが作成されました] > [UI が新しいレコードで更新されました] をクリックします

これはすべて正常に機能しますが、ユーザーが送信を押してからレコードが追加されるまでに (非常に) わずかな待ち時間があります。多くのユーザーがヒットした場合にのみ目立ちます。私がやりたいことは次のとおりです。

ユーザーが送信をクリック > 新しいレコードで更新された UI (Throbber を使用) > Ajax 呼び出し > 新しいレコードが作成された > Throbber が成功時に削除された

そのため、ユーザーにとっては、レコードがまだバックエンドで作成されていても、送信はすぐに行われ、待機する必要はありません。

Railsでこれを行うためのベストプラクティスはあるのでしょうか? それとも、それを処理するためのカスタム JavaScript を書くだけの問題ですか?

4

2 に答える 2

1

:remote => truerails を使用jquery_ujsして ajax リクエストを送信する場合。UJS ライブラリは、さまざまなポイントでカスタム コードをフックするためのコールバックを提供します。

必要なものは次のようなものです。

$('form.new_record').on('ajax:beforeSend', function(event, xhr, settings) {
    // Show throbber
    return true;
});

詳細については、次のリンクを参照してください: https://github.com/rails/jquery-ujs/wiki/ajax

于 2013-09-12T07:03:15.043 に答える