it-swarm.asia

تخصيص ابتكار وجهات النظر في القضبان

أنا أستخدم التصميم الخاص بمصادقة المستخدم ، لكن لديّ نماذج بالحجم الطبيعي لطيفة لتسجيل الدخول أو تسجيل الدخول أو الصفحات. لقد قمت بالفعل بتنفيذ الأمر Rails generate devise:views User ولديّ كل طرق العرض في مجلد طرق العرض ، ومع ذلك ، عندما استبدلت التسجيل/new.html.erb بـ new.html.erb الخاص بي ، لا شيء يتغير ولا يبدو مختلفًا. كما لو كنت قد فعلت أي شيء.

يعرف أي شخص ما أفعله بشكل خاطئ أو على الأقل كيفية تخصيص طرق العرض بنجاح

ملاحظة هل من المهم الإشارة إلى أنني غيرت مسار التصميم/التسجيل # جديد إلى/تسجيل؟

65
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).

أتمنى أن يساعدك هذا.

27
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

لا توجد تغييرات أخرى ضرورية.

113
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 ، سوف يتحقق التصميم تلقائيًا من وجود العرض المخصص وإذا كان الأمر كذلك ، فقم بتقديم ذلك. كما يقول فإنه يضيف بعض النفقات العامة إلى التطبيق ولكن في تجربتي حتى الآن هذا هو الحد الأدنى.

102
DazBaldwin

لأي شخص لا يزال يواجه مشكلة مع هذا ، تكمن المشكلة في الدعوة إلى Rails generate devise:views User. يجب أن يكون Rails generate devise:views لجلب المشاهدات الحالية من محرك Devise Rails. سيؤدي هذا إلى إنشاء طرق عرض مناسبة ستعمل مع المسارات الافتراضية.

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/

و uncommenting ووضع 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.rb.

بعد القيام بذلك ، بدأت طرق العرض الخاصة بي في views/users تظهر بدلاً من تلك الموجودة في الجوهرة.

9
guero64

للرجوع إليها مستقبلاً ، يمكنك فقط إعادة تسمية المجلد من devise => سيجد المستخدم وبالعكس و Rails طريقًا.

2
user1349666