ファイルを非同期通信で保存したとき、2回サブミットされる現象が起こりました。
ファイル以外を保存するときに起こるかは、未確認です。
結果として、Mixpanelが原因でした。
下記のコードで、2回サブミットされました。
form.haml
= form_for @hoge, :html => {:multipart => true}, :remote => true do |f|
= f.file_field :file
= f.submit '保存', :class => 'submit'
:javascript
$(function(){
mixpanel.track_forms('form', 'FormSave',{hoge:hoge});
});
Mixpanelのformイベントを登録する処理が原因だったので、下記のように修正することによって、解決されました。
form.haml
= form_for @hoge, :html => {:multipart => true}, :remote => true do |f|
= f.file_field :file
= f.submit '保存', :class => 'submit'
:javascript
$(function(){
$('.submit').click(function(){
mixpanel.track('FormSave',{hoge:hoge});
});
});
今回はMixnapelが原因でしたが、そのほかの原因で、formを非同期で保存した時、2回サブミットされる現象が起こることがあるみたいので、下記のリンクも参考にしてみてください。
form submitting twice with :remote => true Rails 3.2
Form submitted twice, due to :remote=>true
Rails 3 - Forms - Jquery :remote make duplicates and prompts 2x?