一からRuby on Rails備忘録

Ruby on Rails Tutorial ユーザーログアウトの処理

「Ruby on Rails Tutorial」のサンプルアプリをAngularJSとBootstrap3を使う形にして作成します。今回はユーザーログアウトの処理を作成します。

1)Railsルート設定の確認
 
ログアウトに関わるルート設定は下記のようにしています。
 
$ rake routes
   :
match ‘/app/sessions’, to: ‘sessions#destroy’, via: ‘delete’
 
上記のように、Sessionsコントローラのdestroyアクションで定義するようにルート設定しています。
 
2)AngularJSのresourceサービスの定義内容確認
 
ログインを定義する際にresourceサービスを使って定義済みです。

myModule.factory("sessionResource", function($resource) {
  return $resource("/app/sessions", {},
    {
      'create':  { method: 'POST' },
      'destroy': { method: 'DELETE' },
      'current_user': { method: 'GET', isArray: false }
    }
  );
});

 
3)Railsコントローラを定義
 
$ vi app/controllers/sessions_controller.rb

  def destroy
    cookies.delete(:remember_token)
    head :no_content
  end

 
4)ナビゲーションメニューにsignout関数へのリンクを追
 
$ vi app/views/layouts/_header.html.erb
 
<li><a href=”” ng-click=”signout()”>Sign out</a></li>
 
5)AngularJSのコントローラにsignout関数を追加
 
ログアウトのリンクはナビゲーションメニューにあるのでナビゲーションメニューを制御しているコントローラにsignout関数を追加します。
 
flashService.setUserで現在ログイン中のユーザー名を保持しているので、これにnullを設定します。
 
ログアウト後は、ルートのページに遷移します。
 
$ vi app/assets/javascripts/mymodule.js.erb

function CollapseDemoCtrl($scope, flashService, sessionResource, $location) {
  $scope.signout = function() {
    sessionResource.destroy({}, function(response) {
      flashService.setUser(null);
      $location.path("/");
    });
  };
}
モバイルバージョンを終了