前提・実現したいこと
こちらのサイトを参考にログイン機能を作成していました。
ログインした後にposts_pathに遷移したいのですが、login_pathのままです。
恐らく単にログインができてないだけだと思うのですが原因が分かりません。
発生している問題・エラーメッセージ
エラーは出ていません。
該当のソースコード
cotrollers/application_controller.rb
Ruby
1class ApplicationController < ActionController::Base 2 include SessionsHelper 3 4 protect_from_forgery 5 private 6 # ログイン済みユーザーかどうか確認 7 def logged_in_user 8 unless logged_in? 9 redirect_to login_url 10 end 11 end 12end
controllers/sessons_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 posts_path else redirect_to login_path end end def destroy log_out if logged_in? redirect_to posts_path end end
routes.rb
Rails.application.routes.draw do get '/login', to: 'sessions#new' post '/login', to: 'sessions#create' delete '/logout', to: 'sessions#destroy' resources :posts end
helpers/sessions_helper.rb
module SessionsHelper # 渡されたユーザーでログインする def log_in(user) session[:user_id] = user.id end def current_user if session[:user_id] #@current_user = @current_user || User.find_by(id: session[:user_id])と同じ意味 @current_user ||= User.find_by(id: session[:user_id]) end end #受け取ったユーザーがログイン中のユーザーと一致すればtrueを返す def current_user?(user) user == current_user end # ユーザーがログインしていればtrue、その他ならfalseを返す def logged_in? !current_user.nil? end # 現在のユーザーをログアウトする def log_out session.delete(:user_id) @current_user = nil end end
試したこと
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/26 10:08