##ログイン時の成功、エラーの表示
Sessionコントローラーにflashの追記
app/controllers/sessions_controller.rb
def create
@user = User.find_by(email: params[:session][:email])
if @user && @user.authenticate(params[:session][:password])
log_in @user
redirect_to user_path(@user), flash: {success: "ログインに成功しました"} #追記
else
flash.now[:danger] = "入力に誤りがあります" #追記
render "new"
end
end
ビューにflash表示用を追記
app/viewa/layouts/application.html.erb
<body>
<%= render "shared/header" %>
<div class="container">
<% flash.each do |message_type, message| %> <!--追記-->
<div class="alert alert-<%= message_type %>"><%= message %></div> <!--追記-->
<% end %> #追記
<%= yield %>
</div>
</body>
##アクセス制限、ログインしていないと新規投稿できないようにする
ログインしていなければ、ログイン画面に戻す処理を追加
(@current_userがnilの場合、new_session_pathに飛ばす)
app/helpers/sessions_helper.rb
def authenticate_user
if @current_user == nil
redirect_to new_session_path
end
end
常にcurrent_userメソッドを実行する
sessionにidが入っていたら @current_userに現在のログインユーザーを代入
app/controllers/application_controller.rb
before_action :current_user
tweetsコントローラーのnewとcreateにアクセスしたら、authenticate_userメソッドを実行する。(ログインしていなければ、新規投稿urlに直接アクセスできないようにする)
app/controllers/application_controller.rb
before_action :authenticate_user,{only: [:new,:create]}
以上です。