0

Rails アプリに次のコードがあります。

jQuery ->
    $(document).on "click", "#updateAllTestsButton", ->
        $("form").each ->
            $(this).trigger "submit.rails"
        location.reload()

私がやりたいことは、すべてのフォームがリモート POST 要求を終了した後、現在のページをlocation.reload(). 現在、リロードは反復が完了した後に行われますが、必ずしもフォームの送信が完了するとは限りません。

どうすればこれを行うことができますか?

私は醜い解決策を思いつきましたが、まだ何か良いものを探しています:

num_forms = 0
current_form_count = 0
jQuery ->
    $(document).on "click", "#updateAllTestsButton", ->
        forms = $("form")
        num_forms = forms.length
        forms.each ->
            $(this).submit()

    $(document).on "ajax:complete", "form", ->
        current_form_count++
        if current_form_count == num_forms
            location.reload()
            current_form_count = 0
            num_forms = 0
4

0 に答える 0