often use processing on rails
<% @users.each do |user| %>
<% end %>
<%= form_tag("/login") do %>
<p>メールアドレス</p>
<input name="email" value="<%= @email %>”>
<p>パスワード</p>
<input type="password" name="password" value="<%= @password %>”>
<input type="submit" value="ログイン">
<% end %>
<% @user.errors.full_messages.each do |message| %>
<div class="form-error">
<%= message %>
</div>
<% end %>
<% if @error_message %>
<div class="form-error">
<%= @error_message %>
</div>
<% end %>
<% if session[:user_id] %>
<li>ログインユーザー: <%= session[:user_id] %></li>
<% end %>
# メソッド実行
before_action :set_current_user
#「すべてのコントローラー」で共通する処理を定義
def set_current_user
@current_user = User.find_by(id: session[:user_id])
# Userインスタンスの取得
end
# 実行 - onlyを用いて、適用したいアクションを指定することができる。
before_action :authenticate_user,{only: [:index,:show,:edit,:update]}
#「すべてのコントローラー」で共通する処理を定義
def authenticate_user
if @current_user == nil
flash[:notice] = "ログインが必要です"
redirect_to('/login')
end
def forbid_login_user
if @current_user
flash[:notice] = “すでにログインしています”
redirect_to(“/posts/index”)
end
end
# それぞれのコントローラーで、制御したいアクションを定義
before_action :forbid_login_user,{only: [:top]}
before_action :forbid_login_user,{only: [:new,:create,:login_form,:login]}