0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

RubyonRailsでtwitter風webアプリケーションの作成 STEP3:ログイン、ログアウト機能の実装

Last updated at Posted at 2019-05-25

セッションコントローラーの作成

コマンドライン
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

サーバーを起動してブラウザで確認

スクリーンショット 2019-05-25 9.56.03.png

スクリーンショット 2019-05-25 9.56.17.png

スクリーンショット 2019-05-25 9.56.24.png

今回はここまで

次は投稿機能の実装をしていきます。コチラ

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?