はじめに
この記事では、学習中に出会ったエラーとその解決までの道のりを自分のために記録しています。
初学者のため理解が不十分なところがあるかもしれません。
その場合はご指摘いただけると幸いです。
起こった問題
スクールのカリキュラムでX(旧Twitter)のような短文投稿サイトを作成した際、destroyアクションを実装して投稿の削除ボタンを作成したが、showアクションが実行されてしまった
結論
RubyのコードではなくJavaScriptの問題の可能性があるためコンソールを確認してみる
試したこと①
元の記述(これだとdestroyできない)
<%= link_to "削除", user, method: :delete, data: { confirm: "本当に削除しますか?" } %>
この記述で作成した削除リンクをクリックするとshowアクションに飛んでしまいました。
特にエラーが表示されるわけでもありません。
調べたところ、link_toをbutton_toに変更すると解決する場合があるとのことだったので試してみました。
<%= button_to "削除", user, method: :delete, data: { confirm: "本当に削除しますか?" } %>
この記述にすると削除ボタンが正常に作動しました。
ただ、今後destroyアクションをボタンで実装し続けるわけにもいかないので、何とかリンクで削除できる方法を見つけたい…
試したこと②
参考記事:[Rails6]削除ボタンが動作せず、アラートも動かず、削除ボタンを押すと参照してしまう問題の解決方法
こちらの記事を参考にコンソールを確認したところ
bootstrap:83 Uncaught Error: Module build failed (from ./node_modules/babel-loader/lib/index.js):
Error: Cannot find package '@babel/plugin-proposal-private-methods' imported from /Users/ユーザー名/Desktop/rails/myapp/babel-virtual-resolve-base.js
と表示されていました。
@babel/plugin-proposal-private-methodsというパッケージが見つからない、ということのようなので
yarn add @babel/plugin-proposal-private-methods
こちらを実行したところ、link_toで作成した削除リンクが正常に作動するようになりました。
感想
Railsの勉強を始めてすぐに出会ったエラーということもあり、原因がJavaScriptにあるとは全く思いつかずハマってしまいました。
コンソールを確認するという発想がなかったので勉強になりました。