前回、インストールまではできているので続き
まずはdeviseのメール送信時のホスト名を指定
config/environments/development.rb
へ
1 | config.action_mailer.default_url_options = { host: 'localhost:3000' } |
を追加
もし、cloud9 の場合には
1 2 3 4 | #devise 設定 config.action_mailer.delivery_method = :test config.action_mailer.default_url_options = { host: host } |
というようにホスト名をいれる
追記場所は
最終行の end の前の行
次に root_urlを指定
deviseはログアウト時などのリダイレクト先としてroot_urlを使うため
これがないとエラーになるため
config/routes.rb
へ
1 | root to: "home#index" |
を2行目に追記
次に
実際のControllerやViewがないため作成
1 | rails g controller Home index show |
次に
app/views/layouts/application.html.erb
deviseはログインやログアウトなどのときに、flashにサクセスやエラーメッセージを追加するので、その表示領域を追加
1 2 | <p class = "notice" ><%= notice %></p> <p class = "alert" ><%= alert %></p> |
次にdeviseのモデルを作成
1 | rails g devise User |
とりあえずデフォルトでマイグレード
1 | rake db:migrate |
そして
・ログインしていない場合は、「サインイン」と「ログイン」のリンク
・ログインしている場合は、「プロフィール変更」と「ログアウト」のリンク
を追記するため
app/views/layouts/application.html.erb
へ追記
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <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> |
を追記する
これで
1 | rails s |
でアプリを起動してログインできればOK