5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Rails 忘備録】devise_viewを編集しても反映されない問題

Posted at

#はじめに
「Ruby on Rails」の「devise」を使ってユーザー新規登録/ログイン機能を実装する際、viewを編集しても一向に反映されない問題が発生しました。表示はされることからエラーでもなさそうなため追う術もありません。これを回避するために小技や、devise特有の注意点があることがわかったため、備忘録として残します。

#現象
deviseをインストールし、ビューを「rails g devise:views Model」で作成すると、以下のデフォルトのビューが表示されます。
私の場合は Model = devise で作成しました。
この状態からビューの編集を始めたのですが、どれだけ編集して、どれだけ対策を打ってもデフォルトのビューが表示されるというループにハマりました。

d9640d67d8f66a838477e89051d5f715.png

#今回の解決策
今回、ルーティングやビューファイルに問題は無く、ただHaml(new.html.haml)で作成していた筈なのに、ターミナルの表示からHtml(new.html.erb)を読み込みに行ってることが判明(下図参照)。
これはdeviseの特性で、本来読み込みたいビューファイルが見つからない場合、隠しファイルとして持ってるデフォルトのビューファイル(new.html.erb)が読み込まれるようになってるようです。
e0ac1aa37373aed792a5c3aa1693d2e5.png

つまり、今回読み込みたいビューファイル(new.html.haml)を探しに行ったら見つからなかったということ。
となると、「ファイル名かディレクトリ名が違うのでは」と考えられたので調べてみると、本来「devise」であるはずのビューのディイレクトリが「devises」になってることが判明。
「devise」に修正することで、無事に反映されました。

#学んだこと
・本来読み込みたいビューファイルが見つからない場合、隠しファイルとして持ってるデフォルトのビューファイル(new.html.erb)が読み込まれるという特性を「devise」は有しているということ。開発中はエラーが出ないことが難儀ですが、本番環境で運用を始めるとエラー画面を出る方が困るという観点から、用意されているそうです(ここは人伝てに聞いたので確証を持ってお伝えできないですが)。

・deviseのビュー編集が反映されない時は、ルーティングやコントローラーの確認はもちろんですが、ターミナルから読み込み先のファイル名、ディレクトリ名を確認する。

・別の注意点としては以下を「faile」から「true」に編集すること、ビューの編集が可能になるようです。参照:Railsにdeviseをサクッと導入!認証機能の使い方も解説【日本語化】

config/initializers/devise.rb
config.scoped_views = true

以上です。
3つ目に記載した対応は、調べるとよく見られるものですが、1つ目に記載した内容はあまり記事も見当たらないので、参考になれば幸いです。
deviseはじめ、Railsは容易に開発を進められる反面、ブラックボックスになってる部分も多く、奥が深い。

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?