Настройка отображения представлений в 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 и наоборот, а рельсы найдут маршрут.