Rails / Ajaxの送信で重複したデータが保存される場合
なぜか2つのレコードが登録されてしまう時がある。
何かと思ったら…。
こんなのありますよね。
RailsでformデータをAjaxで送信する。
↓
レスポンスを受け取ってごにょごにょする。
coffee
1
2
3
4
5
6
7
8
$('form').on 'submit', (e) ->
e.preventDefault()
$.ajax({ url: $(this).attr('action'), data: {...} })
.done((data) ->
# Do something
)
やってたらなぜかデータベースに同じデータが保存されてしまった。
まったく同じものがまったく同じ時刻で。
悩んだ結果、イージーなミスでした。
ビュー側
slim
1
2
3
= form_for research_item, url: your_path, remote: true do |f|
= f.text_field :name
....
remote: true
が原因でしたよっと。
Rails便利機能が勝手にリクエスト投げちゃうのです。
いつものくせでAjax ===> remote: true と書いてしまっていた…。
なので、JSですべてハンドリングする場合は js: true を省略しましょう。
以上です。