前提・実現したいこと
railsチュートリアルの8章を勉強しております。
フラッシュメッセージが残っていないか(消えたか)のテストを書き、実際に走らせたところ
エラーが発生し、チュートリアル通り進めていたつもりなのですが解消できません。
また、検索しましたが、NoMethodErrorメッセージのundefined method内の記述が無く、 ` ' となっている箇所もなぜだか分かりませんでした。
お手数ですがご教授いただけますと幸いです。よろしくお願い致します。
発生している問題・エラーメッセージ
ERROR["test_login_with_invalid_information", #<Minitest::Reporters::Suite:0x00007f12d8543660 @name="UsersLoginTest">, 0.7042011660005301] test_login_with_invalid_information#UsersLoginTest (0.70s) NoMethodError: NoMethodError: undefined method ` ' for #<SessionsController:0x00007f12d8242948> app/controllers/sessions_controller.rb:15:in `create' test/integration/users_login_test.rb:8:in `block in <class:UsersLoginTest>'
該当のソースコード
(app/controllers/sessions_controller.rb) class SessionsController < ApplicationController def new end def create user = User.find_by(email: params[:session][:email].downcase) if user && user.authenticate(params[:session][:password]) #ユーザーログイン後にユーザー情報のページにリダイレクトする log_in user redirect_to user else #エラーメッセージを表示する flash.now[:danger] = 'Invalid email/password combination' render 'new' end end def destroy end end
(test/integration/users_login_test.rb) require 'test_helper' class UsersLoginTest < ActionDispatch::IntegrationTest test "login with invalid information" do get login_path assert_template 'sessions/new' post login_path, params: { session: { email: "", password: "" } } assert_template 'sessions/new' assert_not flash.empty? get root_path assert flash.empty? end end
試したこと
①rails route
コマンドでルーティングが正しく書けているか確認しました。
②タイポが無いか確認しました。
補足情報(FW/ツールのバージョンなど)
macOS Catalina 10.15.1
rails 6.0.1
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/22 09:36
2019/12/22 09:37