Hola!, quisiera saber como creo un registro (create) con pasos, por
ejemplo el primer paso es colocar datos personales, el segundo tus
direcciones, tercero cc, etc…
para que al final todo lo ingresado sea guardado en un solo registro.
Es dificil explicar detalladamente la solucion, pues depende de
detalles especificos de tu problema. Sin embargo, aqui van algunos tips:
Usa las validaciones de rails para todos los campos de tu modelo.
Provee valores por defecto para todos los campos, y asegurate que
todos sean validos.
Usa “valid?” en los pasos iniciales para validar los campos sin
guardar el objeto a la base de datos.
Usa save en el ultimo paso para guardar los datos
La accion podria ser algo como:
LAST_STEP = 10
def registration_wizard @model = Model.new(params[:model]) # crear un objeto nuevo cada
vez, junto con todos los atributos @step = params[:step].to_i @next_step = params[:next_step].to_i
if @model.valid?
if @next_step = LAST_STEP
if @model.save
flash[:notice] = “Listo, ya fue modificado el modelo”
redirect_to “/” and return
end
else @next_step = @step + 1
end
end
@next_step ||= @step # Fallaron las validaciones, asi que debemos
volver a mostrar el paso actual
render :action => “registration_step_#{@step}”
end
Como en este caso estas re-generando el modelo en cada paso, tienes
que asegurarte que la vista correspondiente a cada paso incluya todos
los valores, bien sea como campos editables por el usuario, o como
campos escondidos.