前回、インストールまではできているので続き
まずはdeviseのメール送信時のホスト名を指定
config/environments/development.rb
へ
config.action_mailer.default_url_options = { host: 'localhost:3000' }
を追加
もし、cloud9 の場合には
#devise 設定 config.action_mailer.delivery_method = :test host = 'http://techacademy-snowpooll.c9users.io' config.action_mailer.default_url_options = { host: host }
というようにホスト名をいれる
追記場所は
最終行の end の前の行
次に root_urlを指定
deviseはログアウト時などのリダイレクト先としてroot_urlを使うため
これがないとエラーになるため
config/routes.rb
へ
root to: "home#index"
を2行目に追記
次に
実際のControllerやViewがないため作成
rails g controller Home index show
次に
app/views/layouts/application.html.erb
deviseはログインやログアウトなどのときに、flashにサクセスやエラーメッセージを追加するので、その表示領域を追加
<p class="notice"><%= notice %></p> <p class="alert"><%= alert %></p>
次にdeviseのモデルを作成
rails g devise User
とりあえずデフォルトでマイグレード
rake db:migrate
そして
・ログインしていない場合は、「サインイン」と「ログイン」のリンク
・ログインしている場合は、「プロフィール変更」と「ログアウト」のリンク
を追記するため
app/views/layouts/application.html.erb
へ追記
<header> <nav> <!-- user_signed_in? はユーザがログインしているか調べるdeviseのHelperメソッド --> <% if user_signed_in? %> <!-- current_user は現在ログインしているUserオブジェクトを返すdeviseのHelperメソッド --> <!-- *_path はUserモデルを作成したときに、 deviseにより自動で作成されてますので、rake routesで確認できます --> Logged in as <strong><%= current_user.email %></strong>. <%= link_to 'プロフィール変更', edit_user_registration_path %> | <%= link_to "ログアウト", destroy_user_session_path, method: :delete %> <% else %> <%= link_to "サインイン", new_user_registration_path %> | <%= link_to "ログイン", new_user_session_path %> <% end %> </nav> </header>
を追記する
これで
rails s
でアプリを起動してログインできればOK