He agregado un campo al formulario de registro que se basa en un modelo diferente, vea ¿Cómo uso los atributos anidados con el modelo de diseño para los detalles sangrientos? Esta parte está funcionando bien.
El problema ahora es que cuando guardo, está fallando en la acción de creación del controlador de registros que es provisto por un dispositivo Activerecord::UnknownAttributeError
en este campo (empresa).
Supongo que necesito anular el controlador de registros, ¿o hay una manera mejor / más fácil de abordar esto?
ruby-on-rails
devise
Craig McGuff
fuente
fuente
Respuestas:
En su formulario, ¿está pasando otros atributos, a través de una asignación masiva que no pertenece a su modelo de usuario, o cualquiera de los modelos anidados?
Si es así, creo que ActiveRecord :: UnknownAttributeError se activa en esta instancia.
De lo contrario, creo que puedes crear tu propio controlador, generando algo como esto:
Y luego dígale a idear que use ese controlador en lugar del predeterminado con:
fuente
rails generate devise:views
y en Rails 2 (creo) es:script/generate devise:views
paths.app.views << "app/views/devise"
suconfig/application.rb
.Una forma mejor y más organizada de anular la creación de controladores y vistas utilizando espacios de nombres:
Crea las siguientes carpetas:
Coloque todos los controladores que desea anular en app / controllers / my_devise y agregue
MyDevise
espacio de nombres a los nombres de clase de controlador.Registrations
ejemplo:Cambia tus rutas en consecuencia:
Copie todas las vistas requeridas
app/views/my_devise
de la carpeta de gemas Devise o userails generate devise:views
, elimine las vistas que no está anulando y cambie el nombre de ladevise
carpetamy_devise
.De esta manera, tendrás todo perfectamente organizado en dos carpetas.
fuente
create
método de Devise que sobrescribí. Mi controlador creado por el andamio que modifiqué funciona muy bien, pero ¿cómo lo hace funcionar con elresource
negocio de Devise ?MyDevise::RegistrationsController < Devise::RegistrationsController
crea un error de dependencia circular. ¿Estoy haciendo algo mal?Creo que hay una mejor solución que reescribir el Controlador de Registros. Hice exactamente lo mismo (solo tengo Organización en lugar de Compañía).
Si configura correctamente su forma anidada, a nivel de modelo y vista, todo funciona de maravilla.
Mi modelo de usuario:
Mi modelo de organización:
Mi opinión: 'idear / registros / new.html.erb'
fuente
resource
en la vista en lugar de una variable de instancia de clase@resource
?Puede generar vistas y controladores para diseñar la personalización.
Utilizar
y
Copiará controladores y vistas particulares de gem a su aplicación.
A continuación, dígale al enrutador que use este controlador:
fuente
Métodos muy simples Solo ve a la terminal y escribe el siguiente
Siguiente para usar vistas personalizadas
ahora en su archivo route.rb
También puede agregar otros controladores. Esto hará que se usen controladores en la carpeta de usuarios y vistas en la carpeta de usuarios.
Ahora puede personalizar sus vistas como desee y agregar su lógica a los controladores en la carpeta de controladores / usuarios. ¡A disfrutar!
fuente