Настройка представлений Devise в Rails

Я использую devise для аутентификации пользователя, но у меня есть хорошие макеты для регистрации, входа и т. д. страницы. Я уже сделал rails generate devise:views User команда и все представления в папке views, однако, когда я заменил регистрацию / new.формат html.erb с моим новым.формат html.Эрб, ничего не меняется и не выглядит по-другому. Как будто я что-то сделал.

кто-нибудь знает что я делаю неправильно или, по крайней мере, как успешно настроить разработать вид

П. С. Важно отметить, что я изменен маршрут разработки / регистрации#new to / signup?

8 ответов


маршрут 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

если вы уже сделали это, переместите папки devise, созданные из app/views/User новая папка app/views/devise (или просто переименовать


хотя это старый вопрос, я подумал, что добавлю к нему, если кто-нибудь наткнется на него. Я не уверен, что это новое дополнение, так как вопрос был первоначально задан, но если это так, то более простой (более современный) подход.

в файле 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. Он должен быть!--1--> для получения текущих представлений от двигателя Devise Rails. Это создаст правильные представления, которые будут работать с маршрутами по умолчанию.


после создания пользовательских представлений e.g

rails generate devise:views User

поворот на scoped_views на config/initializer/devise.rb

view config.scoped_views = true

и вы сделали.


используя rails g devise:views User позволяет настроить, когда у вас есть более чем одна роль.

правильный способ сделать это, зайдя в свой devise.rb на config/initializer/ папку

и раскомментируйте и установите config.scoped_views = true.

теперь вы можете редактировать файлы view erb без каких-либо проблем


у меня была та же проблема, пока я не вернулся и не прочитал документацию devise:)

после rails generate devise:views убедитесь, что вы идете в initializers/devise.rb и set config.scoped_views = true. Это объясняется в документации devise на https://github.com/plataformatec/devise а также в devise.rb комментарии.

после того, как я сделал это, мои собственные взгляды в views/users начали появляться, а не в камень.


для дальнейшего использования вы можете просто переименовать папку из devise = > user и наоборот, и rails найдет маршрут.