ruby on rails - programar - Personalizar vistas de diseño en Rails
ruby on rails ejemplos (8)
Estoy usando el diseño para la autenticación del usuario, pero tengo buenas maquetas para las páginas de registro, inicio de sesión, etc. Ya he hecho los rails generate devise:views User
comando de rails generate devise:views User
y tiene todas las vistas en la carpeta views, sin embargo, cuando reemplacé el registro / new.html.erb con mi propio new.html.erb, nada cambia ni se ve diferente. Es como si hubiera hecho algo.
Alguien sabe lo que estoy haciendo mal o al menos cómo personalizar con éxito vistas de diseño
PD: ¿Es importante tener en cuenta que he cambiado la ruta de diseño / registro de # nuevo en / registro?
Después de generar sus vistas personalizadas, por ejemplo
rails generate devise:views User
Active scoped_views
en config/initializer/devise.rb
view config.scoped_views = true
Y has terminado.
Para cualquiera que todavía tenga un problema con esto, el problema radica en que la llamada a los rails generate devise:views User
. Debería ser rails generate devise:views
para obtener vistas actuales del motor Devise Rails. Esto generará vistas adecuadas que funcionarán con las rutas predeterminadas.
Para referencia futura, puede cambiar el nombre de la carpeta desde el dispositivo => usuario y viceversa y los rieles encontrarán una ruta.
Su signup
ruta o devise/registrations#new
representará las vistas de views/devise/registrations/new.html.erb
. Parece que realizó cambios en views/user/registrations/new.html.erb
, lo que explicaría por qué no ve los cambios realizados, ya que no se representan.
Necesitarás crear un user/registrations_controller.rb
que se extienda desde Devise::RegistrationsController
y apuntar tu /signup
ruta de /signup
a user/registrations#new
, o puedes simplemente hacer tus cambios directamente a views/devise/registrations/new.html.erb
La misma idea se aplica a sus páginas de inicio de sesión ( devise/sessions
).
Espero que esto ayude.
Tuve el mismo problema hasta que volví y leí la documentación del inventor :)
Después de que los rails generate devise:views
aseguran de entrar en initializers/devise.rb
y configurar config.scoped_views = true
. Esto se explica en la documentación de devise.rb
en https://github.com/plataformatec/devise , así como en los comentarios de devise.rb
.
Después de hacer esto, mis propios puntos de vista en views/users
comenzaron a aparecer en lugar de los de la gema.
Uso de rails g devise:views User
permite personalizar cuando tiene más de una función.
la forma correcta de hacerlo es ir a su devise.rb
en config/initializer/
folder
y descomentar y configurar config.scoped_views = true
.
ahora puede editar los archivos erb de vista sin ningún problema
aunque esta es una vieja pregunta, pensé que me gustaría agregarla en caso de que alguien se tropiece con ella. No estoy seguro si esto es una nueva adición ya que la pregunta fue formulada originalmente, pero si es así, el enfoque más simple (más moderno) es este.
en el archivo config/initializers/devise.rb
hay el siguiente bloque de código:
# ==> 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
al descomentar config.scoped_views = false
y cambiar su valor a true
, idear automáticamente comprobará si la vista personalizada existe y, de ser así, lo publicará. Como se dice, agrega un poco de sobrecarga a la aplicación, pero en mi experiencia hasta ahora esto es mínimo.
de un vistazo respuesta.
...en lugar de
rails generate devise:views User
utilizar:
rails generate devise:views
Si ya lo ha hecho, mueva las carpetas creadas desde la app/views/User
a una nueva carpeta de app/views/devise
(o simplemente cambie el nombre de la carpeta de User
para devise
, si esa es una opción).
Esas carpetas son:
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
No hay otros cambios son necesarios.