Rails コース

Gem入門3-1

前章に引き続き、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"
  -#

この教材はメンバー専用です

メンバー専用の教材にアクセスするには、
ハッカーIDでログインしてください。

or