buenas… tengo un problema y no se como afrontarlo, entonces acudà a
uds
tengo 4 modelos
Propiedades
Casas
Departamentos
Fotos
Propiedad -> Casas
-> Departamentos ( Propiedades tiene muchas casas y muchos
departamentos )
Casas -> Fotos
Departamentos -> Fotos
Casas tiene muchas Fotos
Departamentos tiene muchas Fotos
tengo que crear un formulario para que el usuario pueda ingresar una
casa o departamento… la manera que esta hecho es asi… primero creas
una propiedad, dependiendo de si es casa o departamento lo redirige
hacia el control respectivo ( casa o departamento )y al 3 paso ingresa
la Imagen.
el problema es que si el usuario cancela en algun paso el ingreso de la
propiedad, esta queda coja ( tengo validado que cuando ingrese a sus
propiedades, este las actualice y complete ) pero… existira una mejor
forma de crear este formulario de 3 pasos y que al finalizar el 3 paso
cree todos los Datos ingresados?
Hola David, he afrontado el mismo problema que tu con adondevivir.com,
te
comento algunas cosas que te pueden ser útiles:
Para el manejo de distintos tipos de propiedades uso STI[1], las
validaciones y demas cosas que son comunes a todos los tipos de
propiedades
las coloco en el modelo principal: Property.
Las fotos estarian relacionadas a la propiedad(modelo Property) y no
a un
tipo de propiedad en especial.
para la creación de una nueva propiedad hago lo siguiente:
y asi sucesivamente para cada tipo de propiedad. En el controlador para
el
manejo de propiedades, concretamente en la accion new tengo lo
siguiente:
def new
unless params[:t].blank?
begin @property = params[:t].camelize.constantize.new
if !@property.kind_of?(Property)
render :template => ‘panel/properties/select_property’ and
return
end @disabled_features = (Property::OPTIONAL_FEATURES.keys - @property.disable_features)
render :template => ‘panel/properties/new’
rescue NameError
render :template => ‘panel/properties/select_property’
end
else
render :template => ‘panel/properties/select_property’
end
end
Basicamente lo que hago es comprobar que el tipo de propiedad elegida
sea
una valida(para evitar por ahi que ingresen la URL manualmente), si no
es un
tipo de propiedad valida o no se le pasa el parametro entonces renderiza
la
vista donde tiene que escoger el tipo de propiedad a crear, en esta
accion
tambien inicializo la variable @disable_features que basicamente guarda
los
atributos que la propiedad esta siendo creada no deberia tener, por
ejemplo
un terreno agricola no tiene numero de baños, espero que eso te sirva en
algo.