【75日目】【1日20分のRailsチュートリアル】【第8章】ログイン失敗時のエラーメッセージを表示する
今日は「8.1.4 フラッシュメッセージを表示する」から。
8.1.4 フラッシュメッセージを表示する
ログインに失敗したときには代わりにフラッシュメッセージを表示することにします。最初のコードをリスト8.6に示します (このコードはわざと少し間違えてあります)。
ユーザー登録の場合はActive Recordのエラーメッセージがあったのでそれを使えば良かったけど、
ログインの場合はそんなのないので自前で用意します。
app/controllers/sessions_controller.rb
: else flash[:danger] = 'Invalid email/password combination' # 本当は正しくない render 'new' end :
サーバー起動してエラーメッセージを確認。
$ rails server -b $IP -p $PORT
適当なユーザー情報を入力して「Log in」ボタンをクリック。
Bootstrap CSSのおかげで見た目はいい感じです。
実は上のコードのままでは、リクエストのフラッシュメッセージが一度表示されると消えずに残ってしまいます。 (中略)
たとえば、わざと無効な情報を入力して送信してエラーメッセージを表示してから、Homeページをクリックして移動すると、そこでもフラッシュメッセージが表示されたままになっています (図8.6)。
ほんとだ…!
ユーザー登録時に使ったリダイレクトはフラッシュメッセージは消えるけど、
render
メソッド使った再レンダリングは消えないのか。。。
このバグは8.1.5で修正するそう。
今日の作業時間は【20分】。
次は「8.1.5 フラッシュのテスト」から。