1
2

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ファイルをhamlに変換する時の注意点

Posted at

こんばんは
アロハな男、やすのりです!

今日はdeviseのビューファイルを修正している時に遭遇した躓きポイントについてお話していこうと思います。

ただ、前提が当てはまる人は参考にしていってね!!

前提

Railsでアプリケーション作成中にGemの
_devise_を使用していて、更に_haml-rails_等でhtml.erbhtml.hamlに変換している人

状況

ファイル名

_devise_の新規登録ページのビューファイルに名前の入力欄を追加したいと思いコード修正していました。

views/users/registrations/new.html.haml
%h2 Sign up
= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f|
  = render "users/shared/error_messages", resource: resource
  .field
    = f.label :name
    %br/
    = f.text_field :name, autofocus: true
  .field
    = f.label :email
    %br/
    = f.email_field :email, autofocus: true, autocomplete: "email"
  .field
    = f.label :password
    - if @minimum_password_length
      %em
        (#{@minimum_password_length} characters minimum)
    %br/
    = f.password_field :password, autocomplete: "new-password"
  .field
    = f.label :password_confirmation
    %br/
    = f.password_field :password_confirmation, autocomplete: "new-password"
  .actions
    = f.submit "Sign up"
= render "users/shared/links"

ということで、:nameの欄を足してこれでバッチリだ!!
と、思っていたら...
ファイル名

...え?
何も変わってなくない??あれ???

修正するビューファイル間違えたかな?と思って確認してみても間違いなく registrations って書いてあるし...

ファイル名
あれ!?
なぜか、new.html.erbを参照してる!?
しかも参照先がapp/views/deviseregistrations/new.html.erbになってるぞ!?

と、思いいろいろ調べて見ると原因が見えてきました。

原因

僕のアプリケーションの構成上、deviseにUserモデルを持たせていたので、_devise_のビューファイルを生成する時に$ rails g devise:views usersとコマンドを打っていたんですが、これが原因みたいです。
そもそも_devise_のモデルがUserモデル以外に無いのであれば、 $ rails g devise:viewsだけで良かったみたいです。
※Userモデル以外というよりは、deviseのモデルが__1つだけ__の時と言う方が正しいかも?

2つのコマンドの違いは?

生成されるビューファイルのディレクトリ構造が少し変わってしまいます。
具体的には$ rails g devise:views usersとコマンドを打った場合は、

app/views/users/以下にディレクトリとビューファイルが生成されます。

一方、 $ rails g devise:viewsとコマンドを打った場合は

app/views/devise 以下にディレクトリとビューファイルが生成されます。

deviseディレクトリ...

ファイル名

これだぁぁあああ!!

はい、ということでビューファイルを生成した段階でコミットしていたので、コミット履歴を削除してコマンドを打ち直した後に、新規ビューファイルのコードを修正してみました。

すると...

ファイル名

よしっ!!
名前の入力欄が加わってるぞ!!

ファイル名

参照先もちゃんとnew.html.hamlになってる!!

結論

_devise_のビューファイルを生成する時は、基本$ rails g devise:viewsでOK!!

皆さんも気をつけてね!!

1
2
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
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?