Rails Tutorial 第8章ログイン、ログアウト 8.1.4 フラッシュメッセージを表示する が NoMethodErrorになる の解決方法
Rails4.2(第3版)を使用
Rails Tutorial 第8章 8.1.4 フラッシュメッセージを表示するのリスト8.6:ログイン失敗時の処理を扱う(誤りあり)は以下のようになっています。
class SessionsController < ApplicationController def new end def create user = User.find_by(email: params[:session][:email].downcase) if user && user.authenticate(params[:session][:password]) # ユーザーログイン後にユーザー情報のページにリダイレクトする else flash[:danger] = 'Invalid email/password combination' # 本当は正しくない render 'new' end end def destroy end end
こんな感じの画面になるよ、と書いてありますが。。。
ならない。
エラーのメッセージは、
「NoMethodError in SessionsController#create」と出ます。
色々調べた結果2つの[:session]を[:sessions]にすると解決できました。
これがなぜそうなるのかはまだ理解できていませんが。。。