WriteSomeCode ECサイトを作ろう Task1 ハマったところ

Ruby on Rails, プログラミングdevise, writesomecode

【経緯】
ゲスエンジニアのとださん(@cohki0305)が運営しているRailsのスキルアップコミュニティに参加して、その実践の際に自分が躓いたところの備忘録です。
有料の解説noteを出されているので、そこ以外で躓いた部分を載せます。

【Task1 ユーザログイン認証】
今回行うTaskは大きく分けて以下の3つ
・LandingPage作成
・gem deviseを使ったユーザ認証 & ログイン
・gem letter_openerを使った開発環境作成
(https://github.com/writesomecode/ec_site/issues/1より抜粋)

【環境】
ruby 2.5.0
rails 5.2.3
devise 4.6.2
letter_opener 1.7.0

【ハマったところ1】
ハマったというか、自分があまりにも他のサイトなどを参考に作っていたからってだけですが、ユーザがログインしているかどうか分岐する際のメソッドを覚えていなかったので、調べないといけませんでした。

公式ソースを確認し、

To verify if a user is signed in, use the following helper:
user_signed_in?

と確認したので、<% if user_signed_in? %>を使って分岐させました。

【ハマったところ2】
deviseのログアウトのリンクを作成するにあたって、

改善前:
<%= link_to "Log out" destroy_user_session_path %>
として、ログアウト時に該当リンクをクリックすると下記のルーティングエラーが発生。

deviseのログアウトルーティングエラー

原因として、method: :deleteの引数をつけ忘れということを確認。

改善後:
<%= link_to "Log out" destroy_user_session_path, method: :delete %>
とすることにより、正常にログアウトできるようになりました。

webで「devise log out error」などで検索すると、config/routes.rbにGETでルーティングを上書きしていたりする記事も見つかりましたが、そんなことせずともview側でメソッド指定すれば問題なく動くはずです。
Railsなので基本的にはレールに従ったほうが無難でしょう(deviseはrails wayに沿っていないところもありそうですが)。

【感想】
自分でも他のサイトをいくつか独学なりに勉強して作っていたので、いけるかな〜と思っていましたが、案外時間がかかりました。同居人とテレビ観ながら作業していたので、正確な時間はわかりませんが、おそらく1時間くらいはかかっていたかもしれないですね。
CSSは全く無視して一旦作ったので、これくらいであれば30分でできるようになりたいです。