おはようございます、もっちゃんです!
早速ですが、「devise」ってgemありますよね!
Railsでログイン機能を簡単に実装できる
(初学者にとって決して簡単とは言えない気がする)
gemです(*´ω`*)笑
今回はdeviseを使ってログイン機能を実装したのに
なぜかログインがうまくできない!!
と3時間ハマった末に解決したという私の経験から
超簡単な対処法を解説したいと思います!
(あくまで私がハマった一例ですのでご参考までに。。)
【devise】ログインできないときの対処法
結論から言うと
こうすることでログインが正しく機能するようになります
つまり〜
「usersコントローラーのルーティングと、deviseのルーティングの順番」
これが原因でした!
(正確にはルーティングが衝突してしまうのが原因だけど、いまは飛ばしてあとで解説します)
まずはルーティングを確認する
ご存知のとおり「$ rails routes」コマンドでルーティングを確認すると
このようにルーティングが表示されますね
ここで赤枠で囲まれたところを見てみましょう!
はい!原因はこれです
「usersのルーティング」が「deviseのルーティング」よりも
先に表示されていますよね?
この順番がイケてなかったわけです!
devise_for :usersを最初に持ってくる
/config/routes.rbファイルを開いて
devise_for :usersを最初に持ってきます!
こうすることでルーティングの順番を変えることができます!
もう1度ルーティングを確認する
このようになりました!
アップで見てみると
deviseのルーティングがusersよりも上に(先に)表示されていますね!
これで解決です!
終わりに
今回の原因はこんなかんじで
ルーティングが衝突してしまうことが原因でした
users/:idにsign_upが変数として入ってしまい
deviseコントローラーが動かないために
ログインできない
ということになってしまうみたいです!
プログラミングってほんとにわからないことだらけで
9.5割はググって進めていくかんじですよね(笑)
それゆえに挫折率が高いと言われてます
いま私はプログラミングを本格的にはじめて3ヶ月くらいですが
正直わからないことしかないです(゚∀゚)笑
でも今回みたいに長時間悩んだ末に、答えに辿り着けたときの快感にはものすごい中毒性があるんです(゚∀゚)笑
これがわかるようになって、スラスラ思い通りにプログラミングできたら、どんなに楽しいだろう。。。
そんなことを思いながら、日々腕を磨いているわけです(*´ω`*)
目指せ理想の「キャンプ場検索予約サービス」開発!!!