Rails で Devise のビューを作成してカスタマイズ

スポンサーリンク

前回、Rails で Devise のコントローラーをカスタマイズしたのですが、カスタマイズ用コントローラーを作成した場合、同名のビューを用意してやったほうが、Rails の規約的にも分かりやすいと思います。ということで、app/views/users/ に Devise が管理するビューファイルをコピー生成します。

— 環境 —
rails 5.0.0.1
devise 4.2.0

【お知らせ】 英単語を画像イメージで楽に暗記できる辞書サイトを作りました。英語学習中の方は、ぜひご利用ください!
画像付き英語辞書 Imagict | 英単語をイメージで暗記
【開発記録】
英単語を画像イメージで暗記できる英語辞書サービスを作って公開しました
スポンサーリンク

devise のジェネレータでビューをコピー生成

まず、Devise の gem で管理されているデフォルトのビューを、app/views/users 内にコピー生成する。

これで app/views/users というビュー用のディレクトリが生成される。

railsapp/
| 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

h2タグの内容に「しますよー」と追加してみました。

サーバーを起動し、http://localhost:3000/users/sign_in にアクセスしてみますと以下の通り、ビューが変更されているのを確認できました。

スクリーンショット 2013-12-04 12.33.12

複数のモデルで個別のビューをカスタマイズする場合

複数のモデル(User と Admin など)を利用する場合、devise はデフォルトでは全てのモデルで同じビューを利用します。個別にビューを作成する場合は、config/initializers/devise.rb で以下を指定します。

config/initializers/devise.rb

そして、ビューを追加してカスタマイズ。

スポンサーリンク
パーフェクト Ruby on Rails は、最近読んだ Rails 本の中では一番役に立った本です。Chef や Capistrano など Rails と共によく使用される技術にも触れてあります。Ruby on Rails 4 アプリケーションプログラミングは、入門的な内容で Rails の機能全体を網羅されています。
 
スポンサーリンク

Leave Your Message!