質問: Ruby on Railsでdevise機能を導入しました。 gemファイルに必要事項を記載した後、 ``` rails g devise:install ``` ``` rails g devise user ``` ``` rails db:migrate ``` ``` rails g devise:views users ``` を順番に実行し、再起動しました。 hamlで作っているので ``` rails haml:erb2haml ``` このコマンドでhamlに変換しました。 ここまで終わったら一度編集出来ました。 編集出来たのを確認して、一番メインのビューにログインボタン、新規登録ボタンを作成するのを 忘れていたのでlink_toで作成しました。 作成して再びログイン、新規登録ビューを作成しようと思ったら何故か編集できませんでした。 ちなみにscssはちゃんと反映されます。 原因が全く分かりません。 後、パスワードの文字数制限が6..128までの設定になっていたので、8..16に変更しました。 nameカラムが必要でしたので、追加しました。 試しに新規登録のビューファイル全て消して、そのビューをリロードしても消されることなく、残ってます。 これは他のファイルが邪魔してるってことでしょうか? 触っているファイルはviews/users/registrations/new.html.hamlです。 ご回答お願いします。
回答: おそらくですが、devise は app/views/users ではなく app/views/devise の view を探しに行っているのだと思います。 二通りの修正方法があります。 方法1 view のテンプレートを生成するときに、 ``` rails g devise:views users ``` というコマンドを使われているようですが、これは devise のモデルが複数あるとき(例えば User と Admin に分けてる場合など)のやり方です。 もし devise のモデルが User しかないなら、 ``` rails g devise:views ``` としてください。 (ファイルは app/views/devise の下に生成されます) 方法2 もう一つ手段があります。 view のフォルダ構成は今のまま変えずに、 `config/initializers/devise.rb` の設定を `config.scoped_views = true` に変更し、 railsサーバーを再起動してみてください。 そうすると、devise が app/views/users を参照するようになるはずです。