今までRailsでデータ削除リンクを作るときに下記のようにconfirmオプションを使ってダイアログを表示させていたかと思う。
1 | <%= link_to "削除" , user, method: :delete , confirm: "本当に削除しますか?" %> |
しかし、Rails4.1の場合、Chromeで表示してみるとHTMLタグは以下のようになっている。
1 | < 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:オプションを使って以下のように書くと正常に動作する。
1 | <%= link_to "削除", user, method: :delete, data: {confirm: "本当に削除しますか?"} %> |
解決方法を紹介しているサイトは見つからなかったので、おそらくRails4.1を使っている人はほとんどいないのだろうか?