今までRailsでデータ削除リンクを作るときに下記のようにconfirmオプションを使ってダイアログを表示させていたかと思う。
<%= link_to "削除", user, method: :delete, confirm: "本当に削除しますか?" %>
しかし、Rails4.1の場合、Chromeで表示してみるとHTMLタグは以下のようになっている。
<a confirm="本当に削除しますか?" data-method="delete" href="/users/1" rel="nofollow">削除</a>
本来「data-confirm」となってほしいところが「confirm」となってしまい、リンクをクリックしても確認ダイアログが表示されず、そのまま削除が実行されてしまう。
タイプミスだと思ったが、下記の書籍によるとRails4.0で廃止予定、Rails4.1より完全に廃止されたそうだ。
実践Ruby on Rails 4 現場のプロから学ぶ本格Webプログラミングちなみに、GoogleBooksにも表示されていた。
実践Ruby on Rails 4 現場のプロから学ぶ本格Webプログラミング – 黒田 努 – Google ブックス
対処方法は?
廃止と言われても、確認もなしに削除してしまうのは困る。しかし、aタグをベタ書きしなければならないかというとそうではなく、ただ書き方を変えればいい。Rails4.1ではdata:オプションを使って以下のように書くと正常に動作する。
<%= link_to "削除", user, method: :delete, data: {confirm: "本当に削除しますか?"} %>
解決方法を紹介しているサイトは見つからなかったので、おそらくRails4.1を使っている人はほとんどいないのだろうか?