0
0

More than 1 year has passed since last update.

CRUD処理(rails6)エラー解決

Last updated at Posted at 2022-01-16

CRUD処理を実装中に発生したエラーについてのアウトプット。

エラー内容

投稿した情報を削除しようとした時に発生したエラー。
削除なのにHTTPメソッドがGET、本来はDELETE.

スクリーンショット 2022-01-09 14.51.45.png

考えられる原因

1.ルーティングが間違っている。
2.コントローラーアクション間違い
3.ビューファイル記述間違い

エラー解消の流れ

1~3が間違っていないか確認。

 ルーティング
  delete '/users/:id', to: 'users#destroy'

 コントローラー
  def destroy
    user = User.find(params[:id])
    user.destroy
  end

 削除ボタン追加
  <%= link_to '削除', "/users/#{user.id}", method: :delete, data: {confirm: "削除しますか?"}  %>

 ビュー
 <h1>削除完了</h1>
  <%= link_to "一覧画面へ", "/users" %>

確認してみたがコードの間違いは見つけられず。
息詰まったのでエラーメッセージでググることに、link_toではなくbutton_toにすれば削除はできるとの記事を発見し、早速実施。
button_toにコードを書き換えると削除はできるようになったが、スッキリとは解決していないので再度情報収集。

結果

エラーの原因としてはRails7がリリースされたことによるdeleteメソッドの記述の仕方の変更。

エラーが発生した時のRails version

$ rails -v 
$ rails 7.0.1

修正

①インストールされているRailsのバージョン確認

$ gem list rails

②使用したいバージョンがないときはインストール実施

$ gem install rails -v 6.0.4.4

③rails6で再度作成

$ rails _6.0.4.4_ new sample_app

確認

削除ができる。

エラーを解決しての感想

エラー文を見て、ルーティングエラーなのはわかると思うので、そこから一つ一つ、間違っている場所を潰していくことでエラーが解決できると思っていたが、
今回のエラーに関しては元の記述も間違っているところがなく手詰まり感がすごかった。
なんとか解決することができたのでまた一つ成長できたと思う。

0
0
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
0