【Rails 忘備録】devise_viewを編集しても反映されない問題
はじめに
「Ruby on Rails」の「devise」を使ってユーザー新規登録/ログイン機能を実装する際、viewを編集しても一向に反映されない問題が発生しました。表示はされることからエラーでもなさそうなため追う術もありません。これを回避するために小技や、devise特有の注意点があることがわかったため、備忘録として残します。
現象
deviseをインストールし、ビューを「rails g devise:views Model」で作成すると、以下のデフォルトのビューが表示されます。
私の場合は Model = devise で作成しました。
この状態からビューの編集を始めたのですが、どれだけ編集して、どれだけ対策を打ってもデフォルトのビューが表示されるというループにハマりました。
今回の解決策
今回、ルーティングやビューファイルに問題は無く、ただHaml(new.html.haml)で作成していた筈なのに、ターミナルの表示からHtml(new.html.erb)を読み込みに行ってることが判明(下図参照)。
これはdeviseの特性で、本来読み込みたいビューファイルが見つからない場合、隠しファイルとして持ってるデフォルトのビューファイル(new.html.erb)が読み込まれるようになってるようです。
つまり、今回読み込みたいビューファイル(new.html.haml)を探しに行ったら見つからなかったということ。
となると、「ファイル名かディレクトリ名が違うのでは」と考えられたので調べてみると、本来「devise」であるはずのビューのディイレクトリが「devises」になってることが判明。
「devise」に修正することで、無事に反映されました。
学んだこと
・本来読み込みたいビューファイルが見つからない場合、隠しファイルとして持ってるデフォルトのビューファイル(new.html.erb)が読み込まれるという特性を「devise」は有しているということ。開発中はエラーが出ないことが難儀ですが、本番環境で運用を始めるとエラー画面を出る方が困るという観点から、用意されているそうです(ここは人伝てに聞いたので確証を持ってお伝えできないですが)。
・deviseのビュー編集が反映されない時は、ルーティングやコントローラーの確認はもちろんですが、ターミナルから読み込み先のファイル名、ディレクトリ名を確認する。
・別の注意点としては以下を「faile」から「true」に編集すること、ビューの編集が可能になるようです。参照:Railsにdeviseをサクッと導入!認証機能の使い方も解説【日本語化】
config.scoped_views = true
以上です。
3つ目に記載した対応は、調べるとよく見られるものですが、1つ目に記載した内容はあまり記事も見当たらないので、参考になれば幸いです。
deviseはじめ、Railsは容易に開発を進められる反面、ブラックボックスになってる部分も多く、奥が深い。
Author And Source
この問題について(【Rails 忘備録】devise_viewを編集しても反映されない問題), 我々は、より多くの情報をここで見つけました https://qiita.com/masayan-06/items/e5669b8adbe1064eeb19著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .