Hola, estoy tratando de hacer un formulario que al ser enviado se vuelve
a cargar con los mismos datos si tiene errores, tales como datos
obligatorios omitidos, pero no lo he logrado.
Estoy creando mi propio método de validación, por favor no me
recomienden otros métodos, que esto me sirve para aprender. De todas
formas ya he visto varios.
tengo claro que al enviar una variable de instancia como:
@cliente=Cliente.find(:first)
Entonces en el formulario puedo mostrar lo valores de los campos en
campos de texto de la forma:
<%= text_field :cliente, :nombre %>
Tan bien se que cuando en un metodo recibo los parametros de ese
formulario los recibo mediante params[:clie] que vendria siendo una
especie de hash o arreglo (no estoy seguro)
Ahora bien, si al evaluar los parametros que vienen del formulario (del
tipo form_remote_tag) determino que hay un error, mando a cargar ese
formulario nuevamente, en una capa por cierto.
lo que estaba haciendo en el metodo era cargar los datos del formulario
en una session
session[:cliente]=params[:cliente]
y en la vista del formulario los “bajaba” a una variable de instancia
asi:
<% params[:clie]=session[:clie] %>
luego esperaba que en los campos se mostrara nuevamente los valores
tomados pero no es asÃ. en lugar de eso, revisando el log, me arroja el
siguiente error:
ActionView::TemplateError (undefined method `nombre’ for
#HashWithIndifferentAccess:0x469284c) on line #24 of
app/views/generales/clientes/_formClientes.html.erb:
21: Descripcion:
22:
23: <%=
nulo(“nombre”)%>
24: <%= text_field :cliente, :nombre %>
25:
26:
haciendo mas pruebas me di cuenta de que podia hacer esto en la vista:
<%= params[:clie][:clie_descri] %>
y si me funcionaba, me traia de vuelta el valor que ya habia ingresado
anteriormente. Pero sigo sin saber como puedo colocar ese valor en los
campos de texto
Asi que
¿que debo hacer para que en formulario me tome nuevamente los valores
que ya habÃa ingresado y que le envio desde el metodo?
Perdon por lo largo del post, pero creo que esto podria ayudar a muchos
que anden tras esto.
Gracias de antemano