0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Rails】destroyではなくshowが実行される

Posted at

はじめに

この記事では、学習中に出会ったエラーとその解決までの道のりを自分のために記録しています。
初学者のため理解が不十分なところがあるかもしれません。
その場合はご指摘いただけると幸いです。

起こった問題

スクールのカリキュラムで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にあるとは全く思いつかずハマってしまいました。
コンソールを確認するという発想がなかったので勉強になりました。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?