経緯
Railsのチュートリアルとしてあるアプリを作成している際に、deviceによってログイン機能を実装しようとしたところ、おっと大変、ログアウト時にエラーが発生した。
自分のためにも、解決までの道筋も記しておこうと思う。
環境
Ruby 2.7.3
Rails 6.1.3
エラー内容
Railsお初にしては何事もなく実装が進み、さーてログアウトしてホームページに戻ってみるぞ~と思ったところ、写真のようなエラーが発生した。
試したこと1
ガーン、、、と思いつつ、とにもかくにもエラー内容を見てみると、
""Couldn't find User with 'id'=sing_out""
と出ていたので「idにそんなの渡してないよな???」と思いつつ、idについてのコードをいじってみるが解決せず。
そもそもそれ以外が動いているので、ここではないと判断し次を試すことに。
試したこと2
じゃあルートがミスっているのかと思い、ルート周りを確認してみるも、そもそもそこまで長いコードでもないし、ミスってそうにもない。
タイプミスを疑い、数十分ほど考え倒したが解決しないのでここでネットへ。
解決方法
エラー内容でググると何とびっくり、全く同じエラーでQiitaに記事が!!!
(少し時間の無駄を感じたけれど、考えることは大切?!)
記事によると、sign_outのHttpメソッドがDELETEになっているとGETできないようだ。
そこで、記事にのっとり、config/initializers/devise.rbのconfig.sign_out_viaの値をDELETE→GETに編集した。
(結構下のほうに記載してあった)
config.sign_out_via = :get
すると、見事にエラーは解消された。
私のような初学者からすると、このようなエラーは一生解決できないので非常に助かった。
未来のためにも、定期的にエラーの解決法も書いていこうかなと思う。
(記事はこちら)[https://qiita.com/chisaki0606/items/f1f03a6c226e49b5f7b3]