Настройка отображения представлений в Rails
Я использую devess для auth пользователя, но у меня хорошие макеты для страниц регистрации, входа и т.д.
Я уже выполнил команду rails generate devise:views User
и имею все представления в папке представлений, однако, когда я заменил register/new.html.erb своим собственным new.html.erb, ничего не меняется и не выглядит иначе. Это как будто я что-то сделал.
Кто-нибудь знает, что я делаю неправильно, или, по крайней мере, как успешно настроить представления дизайна
P.S. Важно ли отметить, что я изменил маршрут разработки/регистрации # new в/signup?
Ответы
Ответ 1
Ваш маршрут 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
).
Надеюсь, что это поможет.
Ответ 2
с первого взгляда.
... вместо
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
Никаких других изменений не требуется.
Ответ 3
хотя это старый вопрос, я думал, что добавлю к нему, если кто-нибудь наткнется на него. Я не уверен, что это новое дополнение, поскольку вопрос изначально был задан, но если так, то проще (более современный) подход.
в файле config/initializers/devise.rb
имеется следующий блок кода:
# ==> Scopes configuration
# Turn scoped views on. Before rendering "sessions/new", it will first check for
# "users/sessions/new". It turned off by default because it slower if you
# are using only default views.
# config.scoped_views = false
раскомментируя config.scoped_views = false
и изменив его значение на true
, программа будет автоматически проверять, существует ли пользовательский вид, и если да, то это нужно. Как говорится, это добавляет некоторые накладные расходы на приложение, но по моему опыту пока это минимально.
Ответ 4
Для всех, у кого есть проблемы с этим, проблема заключается в вызове rails generate devise:views User
. Это должно быть rails generate devise:views
для извлечения текущих представлений из Engine Engine. Это создаст правильные представления, которые будут работать с маршрутами по умолчанию.
Ответ 5
После создания пользовательских представлений, например
rails generate devise:views User
Включить scoped_views
в config/initializer/devise.rb
view config.scoped_views = true
И все готово.
Ответ 6
Использование rails g devise:views User
позволяет настроить, когда у вас более одной роли.
правильный способ сделать это входит в вашу папку devise.rb
в config/initializer/
и раскомментирование и установка config.scoped_views = true
.
теперь вы можете редактировать файлы erb без проблем.
Ответ 7
У меня была такая же проблема, пока я не вернулся и не прочитал документацию по разработке:)
После rails generate devise:views
убедитесь, что вы вошли в initializers/devise.rb
и установили config.scoped_views = true
. Это объясняется в документации по разработке https://github.com/plataformatec/devise, а также в комментариях devise.rb
.
После этого мои собственные представления в views/users
начали отображаться вместо тех, что были в драгоценном камне.
Ответ 8
Для справки в будущем вы можете просто переименовать папку из devise = > user и наоборот, а рельсы найдут маршрут.