- 更新日: 2016年11月22日
- Devise
Rails で Devise のビューを作成してカスタマイズ
前回、Rails で Devise のコントローラーをカスタマイズしたのですが、カスタマイズ用コントローラーを作成した場合、同名のビューを用意してやったほうが、Rails の規約的にも分かりやすいと思います。ということで、app/views/users/ に Devise が管理するビューファイルをコピー生成します。
— 環境 —
rails 5.0.0.1
devise 4.2.0
devise のジェネレータでビューをコピー生成
まず、Devise の gem で管理されているデフォルトのビューを、app/views/users 内にコピー生成する。
1 2 3 |
$ bundle exec rails generate devise:views users |
これで app/views/users というビュー用のディレクトリが生成される。
| app
| | views/
| | | users/
| | | | confirmations/
| | | | mailer/
| | | | passwords/
| | | | registrations/
| | | | sessions/
| | | | shared/
| | | | unlocks/
中身は以上のような感じ。Devise で管理されるビューをカスタマイズする場合は、この app/views/users を編集します。
ビューテンプレートを編集して確認
試しに、/users/sign_in がルーティングしている users/sessions#new のテンプレートである、app/views/users/sessions/new.html.erb を編集してみます。
app/views/users/sessions/new.html.erb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<h2>Sign in しますよー</h2> <%= form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f| %> <div><%= f.label :email %><br /> <%= f.email_field :email, :autofocus => true %></div> <div><%= f.label :password %><br /> <%= f.password_field :password %></div> <% if devise_mapping.rememberable? -%> <div><%= f.check_box :remember_me %> <%= f.label :remember_me %></div> <% end -%> <div><%= f.submit "Sign in" %></div> <% end %> <%= render "users/shared/links" %> |
h2タグの内容に「しますよー」と追加してみました。
サーバーを起動し、http://localhost:3000/users/sign_in にアクセスしてみますと以下の通り、ビューが変更されているのを確認できました。
複数のモデルで個別のビューをカスタマイズする場合
複数のモデル(User と Admin など)を利用する場合、devise はデフォルトでは全てのモデルで同じビューを利用します。個別にビューを作成する場合は、config/initializers/devise.rb で以下を指定します。
config/initializers/devise.rb
1 |
config.scoped_views = true |
そして、ビューを追加してカスタマイズ。
1 2 3 |
$ bundle exec rails generate devise:views admins |
- Devise の関連記事
- RailsのDevise認証機能での実装チェックリストまとめ
- Deviseで送信されるメールのfrom(送信者メールアドレス)を変更
- Facebook の OAuth 認証で OAuthException(191)エラー
- Rails Devise でパスワードリセットなどのメールテンプレート(Mailer ビュー)をカスタマイズ
- Rails + Devise 環境でのフレンドリーフォワーディング機能を修正
- Deviseでユーザー登録完了時にウェルカムメールを送信する
- Rails Devise でユーザーがプロフィール情報を更新後に元のページにリダイレクトさせる
- Devise でユーザーがパスワードなしでアカウント情報を変更するのを許可
- Rails Deviseの日本語化辞書ファイル(devise.ja.yml)
- Rails + Devise で admin ユーザー(管理者)を削除できないようにする
- 初回公開日: 2013年12月4日
Leave Your Message!