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