web-dev-qa-db-ja.com

RailsのDeviseビューのカスタマイズ

私はユーザー認証にdeviseを使用していますが、サインアップ、ログインなどのページ用の素敵なモックアップがあります。私はすでにRails generate devise:views Userコマンドを実行し、すべてのビューをビューフォルダーに配置しますが、registration/new.html.erbを自分のnew.html.erbに置き換えても、何も変わらず、見た目も変わりません。それは私が何かをしたかのようです。

誰でも私が間違っていることを知っているか、少なくとも工夫してビューをカスタマイズする方法を知っている

追伸devise/registration#newのルートを/ signupに変更したことに注意してください。

69
Vasseurth

ルートsignupまたはdevise/registrations#newは、ビューviews/devise/registrations/new.html.erbをレンダリングします。 views/user/registrations/new.html.erbに変更を加えたように聞こえます。これは、レンダリングされていないために行われた変更が表示されない理由を説明するものです。

user/registrations_controller.rbから拡張するDevise::RegistrationsControllerを作成し、/signupルートをuser/registrations#newにポイントするか、views/devise/registrations/new.html.erbに直接変更を加える必要があります。

ログイン(devise/sessions)ページにも同じ考えが当てはまります。

お役に立てれば。

30
Kevin Tsoi

一目で答えます。

...の代わりに

Rails generate devise:views User

つかいます:

Rails generate devise:views

すでに行っている場合は、app/views/Userから作成されたフォルダーデバイスを新しいフォルダーapp/views/deviseに移動します(または、Userフォルダーの名前をdeviseに変更します。オプション。)

これらのフォルダーは次のとおりです。

app/views/User/confirmations
app/views/User/mailer
app/views/User/passwords
app/views/User/registrations
app/views/User/sessions
app/views/User/shared
app/views/User/unlocks

他の変更は必要ありません。

118
ocodo

これは古い質問ですが、誰かがつまずいた場合に備えて追加すると思いました。質問が最初に尋ねられたので、これが新しい追加であるかどうかはわかりませんが、そうであれば、より単純な(より現代的な)アプローチはこれです。

ファイルconfig/initializers/devise.rb次のコードブロックがあります。

# ==> Scopes configuration
# Turn scoped views on. Before rendering "sessions/new", it will first check for
# "users/sessions/new". It's turned off by default because it's slower if you
# are using only default views.
# config.scoped_views = false

コメントを外すconfig.scoped_views = falseおよびその値をtrueに変更すると、deviseはカスタムビューが存在するかどうかを自動的に確認し、存在する場合はそれを提供します。それが言うように、それはアプリケーションにいくらかのオーバーヘッドを追加しますが、これまでの私の経験では、これは最小限です。

104
DazBaldwin

まだこれに問題がある場合、問題はRails generate devise:views Userの呼び出しにあります。 Devise Rails Engine。から現在のビューを取得するためのRails generate devise:viewsである必要があります。これにより、デフォルトルートで機能する適切なビューが生成されます。

24
Marcus W

カスタムビューを生成した後(例:

Rails generate devise:views User

オンにする scoped_views in config/initializer/devise.rb

view config.scoped_views = true

これで完了です。

19
Saqib R.

Rails g devise:views Userを使用すると、複数のロールがある場合にカスタマイズできます。

これを行う適切な方法は、devise.rbフォルダーのconfig/initializer/に移動することです

config.scoped_views = trueのコメントを外して設定します。

これで、問題なくビューERBファイルを編集できます

10
Richard Lau

私が戻って考案文書を読むまで、私は同じ問題を抱えていました:)

Rails generate devise:viewsの後、必ずinitializers/devise.rbに移動してconfig.scoped_views = trueを設定してください。これは、 https://github.com/plataformatec/devise のdeviseドキュメントとdevise.rbコメントで説明されています。

これを行った後、views/usersの自分のビューがgemのビューではなく表示され始めました。

10
guero64

後で参照するために、devise => userまたはその逆からフォルダーの名前を変更するだけで、Railsがルートを見つけます。

2
user1349666