QA@IT

Railsでdelete時の確認ダイアログが2度表示されてしまう

5989 PV

現在、rails3.2.11で開発をしているのですが、deleteボタンを押すと必ず'Are you sure?'が2回でます。そこでこれをなんとかしたいと考えています。

具体的な状況を説明します。

rails new testrails
cd testrails/
rails g scaffold blog title:string
rake db:migrate
rails s

でプロジェクトを作り、newを押して記事を一個作成。その後、destroyリンクを押すと、ポップアップで'Are you sure?'が出てきます。これに対してokを押すと、またポップアップで'Are you sure?が出てきます。

記事自体は正常に消えているのですが、ユーザインターフェース的にとても不便です。
なぜこのような現象が起こるのでしょうか?また解決策はあるでしょうか?
お返事お待ちしております。

  • scaffoldで作られるDestroyリンク
<%= link_to 'Destroy', blog, method: :delete, data: { confirm: 'Are you sure?' } %>

追記

お返事ありがとうございます。

application.jsを開いて、//= require_tree .を削除したあと、リロードしてDestroyを押すと正常に動作しました。またpublic/assetsは存在しませんでした。
また、その後//= require_tree .を書き直しても、正常に動くようです。

また症状を正確に再現できないという問題があることがわかりました。

具体的には、正常に動いたtestrailsを削除(rm -rf)して再度作り直してみると、application.jsを編集しなくても(scaffoldのdefaultの状態で)、正常に動く事が確認できました。
また、更新すると、正常に動作することもありました(この現象はそれ以降再現できていません)。

この点は症状を再現する方法を見つけ次第、報告したいと考えています。

ここでいったん質問を整理すると、

今後のrails newで作ったプロジェクトは一度削除して、すぐに作り直すと症状が発生しないことがわかったので、この点は解決策がわかりました。

しかしながら、既存のプロジェクトでは相変わらず2回ポップアップがでている(更新しても駄目)ので、この点の解決策を探しています。

また、この状況がなぜ発生するのかは不思議です。この点も回答を募集しております。

  • 手元の rails 3.2.11 で試してみましたが、再現できませんでした。もし何か他に思い当たる箇所があれば教えて下さい。それか、再現できる rails のプロジェクトを GitHub などで公開して頂けると問題を見つけやすいかもしれません。 -

回答

jquery_ujs が2回 require されてるのではないかという気がします。application.js を以下の2行だけにしてみるとどうでしょう。

//= require jquery
//= require jquery_ujs

追記:

もし public/assets があったら消してみてください。

編集 履歴 (1)
ウォッチ

この質問への回答やコメントをメールでお知らせします。