こんにちは、もみあげ稲荷です。
本日は Ruby on Rails でコメント機能を実装していたら、思わぬ壁にぶち当たりました。
- 削除ボタンを押すと、なぜかGETリクエストが飛んでルーティングエラー!

- コメント投稿者名が「名無し」表示になってしまう!

結論から言うと、どちらもサクッと解決できたので、その手順をまとめておきます。
同じようにお困りの方の参考になれば幸いです。
1. 削除ボタンがルーティングエラーを吐く問題
1-1. 症状
link_to "削除", route_comment_path(@route, comment), method: :delete
と書いているのに、なぜかGETになってしまう。- ブラウザのコンソールを見ると
.js
を探して 404 を返す始末…。 - 結果、
No route matches [GET] "/routes/14/comments/2"
みたいなエラーが出てくる。
1-2. 原因
- Rails 7 からは、
method: :delete
を裏側で処理する仕組みが Rails UJS ではなく Turbo に変わっています。 - 何らかの設定やJSの読み込みがうまくいかないと、リンクがただのGETリクエストとして扱われてしまう。
- また、Ajaxで
.js
レスポンスを探しに行く設定が有効になっていると、destroy.js.erb が存在しないため404になるケースも。
1-3. 解決策:button_to でフォーム送信

button_to
は内部でフォームを生成し、確実にDELETE
メソッドで送信してくれます。- ページ遷移するだけでOKなら、Ajax対応の
.js.erb
を用意する必要はありません。 - ]私の環境(Rails 7 + importmap + Devise)では、この方法で一発解消しました。
もみあげポイント
- Turboを無効化する方法(
data: { turbo: false }
)もありますが、button_to
の方がシンプル。 - Ajax削除をしたい場合は、
.js
に対応したレスポンスを返す設定(respond_to do |format| format.js end
)が必要。
2. 「名無し」問題:ユーザー名が表示されない
2-1. 症状
- コメント一覧で
<%= comment.user&.name || "名無し" %>
と書いているのに、常に「名無し」 が表示される。 - DBを見たら、Userテーブルに
name
カラムはあるが、中身がnil になっている。
2-2. 原因
- Deviseでユーザー登録するときに
name
が渡されていない。 - デフォルトのDeviseは
email
,password
などしかパラメータを受け取らないため、追加カラムを受け取る設定をしないとname
は空っぽのまま。
2-3. 解決策:Deviseに name カラムを教える
- Deviseのビューを生成

app/views/devise/registrations/new.html.erb
やedit.html.erb
が作られます。
2. ユーザー登録フォームに name
フィールドを追加

- 既存のユーザーが編集する場合は
edit.html.erb
にも同様のフィールドを追加。
3. ストロングパラメータの許可

- これを忘れると、
name
は受け取れず、登録しても nil のまま。
4. 既存ユーザーの name
は手動で更新
- 既に登録済みのユーザーは
name
が空なので、アカウント編集ページ(/users/edit
)やRailsコンソールで更新する必要あり。
もみあげポイント
- Deviseを導入して追加カラムを扱うときは、ビュー生成 & パラメータ許可 が基本中の基本。
メールアドレス表示でも良ければ、<%= comment.user&.email %>
を使う方法もある。
3. まとめ:2大トラブルを同時撃破!
- コメント削除ボタンがルーティングエラー →
button_to
でDELETE
を確実に送信 - ユーザー名が表示されず「名無し」連発 → Deviseに
name
カラムを教えて、フォームで入力
この2つをクリアしたことで、コメント機能がスムーズに動くようになりました。
また、ユーザーが自分のプロフィールを編集して名前を設定できるようになったので、見た目や使い勝手もグッと向上!
今後の展望
- 職務経歴書 も並行してブラッシュアップ中。転職活動に向けて、一歩ずつ前進中です。
- コメント機能に「いいね」や「フィードバック」を追加する予定。
- 「もみあげ稲荷」では、これからもRails学習の失敗談&成功体験をどんどん発信します!
4. おまけ:エラーに直面したら…
- ブラウザのネットワークタブでリクエストのメソッドやパスをチェック
- Railsのサーバーログで「Started GET〜」なのか「Started DELETE〜」なのか確認
- エラー文を読む → 「.js ファイルが見つからない」「Devise parameter is unpermitted」などヒントが隠れている
- 慌てずググる or ドキュメントを見る → RailsやDeviseの公式ガイドは頼れる味方
- チャットGPTに聞いてみるのもあり!検索より早いかも!!
エラーは仲間
- エラーが出るってことは、何かを学ぶチャンス。
- 落ち着いてログを読めば解決の糸口が見えてくる…はず!
終わりに
今回は Rails コメント機能 で起きがちな2大トラブル(削除エラー&名無し問題)を一気に解決しました。
Rails 7 + Turbo の挙動や Devise のカスタマイズなど、ちょっとした知識があるだけで、スムーズに乗り越えられます。
これからも「もみあげ稲荷」では、躓いたポイントを包み隠さずお届けしていきますので、同じところで詰まっている方の助けになれば幸いです。
それではまた次回!もみあげ稲荷でした。
コメント