セッションコントローラーの作成
コマンドライン
rails g controller Sessions new
ルーティングの設定
config/routes.rb
resources :sessions, only[:new,:create,:destroy]
ログインビューの作成
app/vews/sessions/new.html.erb
<div class="row">
<div class="col-md-5 col-md-offset-2">
<h3 class="page-header">ログイン画面</h3>
<%= form_for(:session,url: sessions_path) do |f| %>
<div class="form-group">
<p><%= f.label :email , "メールアドレス"%></p>
</div>
<p><%= f.email_field :email %></p>
<p><%= f.label :password,"パスワード" %></p>
<p><%= f.password_field :password %></p>
<p><%= f.submit "ログインする", class: "btn btn-primary" %></p>
<% end %>
</div>
</div>
ログインに必要なヘルパーを読み込み
app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
include SessionsHelper
end
ログインに関するメソッドの追記
app/helper/sessions_helper.rb
module SessionsHelper
def log_in(user)
session[:user_id] = user.id
end
def current_user
if session[:user_id]
@current_user ||= User.find_by(id: session[:user_id])
end
end
def logged_in?
!current_user.nil?
end
def log_out
session.delete(:user_id)
@current_user = nil
end
end
end
ヘッダー(ナビバー)にログイン、ログアウトのリンク追記
app/vews/shared/_header.html.erb
<ul class="nav navbar-nav navbar-right">
<% if logged_in? %>
<li><%= link_to @current_user.email + "さんでログイン中"%></li>
<li><%= link_to "ログアウト",session_path(@user),method: :delete %></li>
<% else %>
<li><%= link_to "ログイン",new_session_path %></li>
<li><%= link_to "新規登録",new_user_path %></li>
<% end %>
</ul>
ユーザー登録後、ログイン中になるようにする
app/controllers/users_controller.rb
def create
@user = User.new(user_params)
@user.save
log_in @user
redirect_to @user
end
サーバーを起動してブラウザで確認
今回はここまで
次は投稿機能の実装をしていきます。コチラ