私はユーザー認証にdeviseを使用していますが、サインアップ、ログインなどのページ用の素敵なモックアップがあります。私はすでにRails generate devise:views User
コマンドを実行し、すべてのビューをビューフォルダーに配置しますが、registration/new.html.erbを自分のnew.html.erbに置き換えても、何も変わらず、見た目も変わりません。それは私が何かをしたかのようです。
誰でも私が間違っていることを知っているか、少なくとも工夫してビューをカスタマイズする方法を知っている
追伸devise/registration#newのルートを/ signupに変更したことに注意してください。
ルート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
)ページにも同じ考えが当てはまります。
お役に立てれば。
一目で答えます。
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
他の変更は必要ありません。
これは古い質問ですが、誰かがつまずいた場合に備えて追加すると思いました。質問が最初に尋ねられたので、これが新しい追加であるかどうかはわかりませんが、そうであれば、より単純な(より現代的な)アプローチはこれです。
ファイル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はカスタムビューが存在するかどうかを自動的に確認し、存在する場合はそれを提供します。それが言うように、それはアプリケーションにいくらかのオーバーヘッドを追加しますが、これまでの私の経験では、これは最小限です。
まだこれに問題がある場合、問題はRails generate devise:views User
の呼び出しにあります。 Devise Rails Engine。から現在のビューを取得するためのRails generate devise:views
である必要があります。これにより、デフォルトルートで機能する適切なビューが生成されます。
カスタムビューを生成した後(例:
Rails generate devise:views User
オンにする scoped_views
in config/initializer/devise.rb
view config.scoped_views = true
これで完了です。
Rails g devise:views User
を使用すると、複数のロールがある場合にカスタマイズできます。
これを行う適切な方法は、devise.rb
フォルダーのconfig/initializer/
に移動することです
config.scoped_views = true
のコメントを外して設定します。
これで、問題なくビューERBファイルを編集できます
私が戻って考案文書を読むまで、私は同じ問題を抱えていました:)
Rails generate devise:views
の後、必ずinitializers/devise.rb
に移動してconfig.scoped_views = true
を設定してください。これは、 https://github.com/plataformatec/devise のdeviseドキュメントとdevise.rb
コメントで説明されています。
これを行った後、views/users
の自分のビューがgemのビューではなく表示され始めました。
後で参照するために、devise => userまたはその逆からフォルダーの名前を変更するだけで、Railsがルートを見つけます。