ログイン機能を実装しよう
前章に引き続き、movieプロジェクトに新しい機能を追加しながら、代表的なgemの使い方を学びましょう。今回は「ログイン機能」です。完成イメージは下記の通りです。
・登録ユーザーはプロフィール機能が使えるようになる
・works/directorsのindexとshowは、ユーザー登録の有無に関わらず誰でも閲覧できる
・登録ユーザーはworks/directorsの登録、編集、削除が可能になる
今回は、ログイン機能を手軽に導入できるgem 「devise」を利用します。
早速Gemfileに以下を追記し、bundle install
を実行しましょう。
gem 'devise'
次に、deviseに必要なファイルをインストールするための以下のコマンドを実行してください。
rails generate devise:install
コマンドを実行すると、ターミナルに以下のように1〜4の指示が表示されます。
Some setup you must do manually if you haven't yet: 1. Ensure you have defined default url options in your environments files. Here is an example of default_url_options appropriate for a development environment in config/environments/development.rb: config.action_mailer.default_url_options = { host: 'localhost', port: 3000 } In production, :host should be set to the actual host of your application. 2. Ensure you have defined root_url to *something* in your config/routes.rb. For example: root to: "home#index" 3. Ensure you have flash messages in app/views/layouts/application.html.erb. For example: <p class="notice"><%= notice %></p> <p class="alert"><%= alert %></p> 4. You can copy Devise views (for customization) to your app by running: rails g devise:views
1)指示通りconfig/environments/development.rbにコードを追加します。
2)root to
は既に設定済み("works#index"
)ですので対応不要です。
3)指定されているコードをhamlに変換して、app/views/layouts/application.html.haml
に追加します。
これはログインした際に「正常にログインしました」「ログインに失敗しました」などのメッセージを
表示させる部分で、今回はここにbootstrapに準備されているalertのデザインを適用します。
サンプルのコードを参照しながら、classを割り当てましょう。
app/views/layouts/application.html.haml
!!!
%html{:lang => "en"}
%head
%body
=render 'header'
-if notice.present?
.container
%p.notice.alert.alert-success{:role => "alert"}
=notice
-if alert.present?
.container
%p.alert.alert-danger{:role => "alert"}
=alert
= yield
=render 'footer'
= javascript_include_tag "application"
-#