Array como parámetro


#1

Hola,
No sé si esto que voy a preguntar es una chorrada, pero no sé me ocurre
cómo hacerlo.
Tengo una vista que contiene un formulario. Además tengo un array de datos
que se construye dinámicamente.
Pero no sé cómo enviarlo en el formulario.
Por ej.
@misdatos=[“1”,“2”]

si intento algo así dentro del formulario,
<input type=‘hidden’ name=‘misdatos’ value=<%=@misdatos%>>

Me envía esto, misdatos=“12”.

Igual todo esto es una barbaridad, pero estoy algo perdida.
Gracias


#2

Una solucion cutre
sería
<%i=0%>
en la vista:
<%for dato in @misdatos%>

<%i++%>
<%end%>
<input type=’‘hidden’ name=‘total_datos’ value=<%=i%>>

y en el controlador

for num in 0…params[:total_datos].to_i
puts params[:dato][i.to_s]
end

No sé si funcionará, lo he puesto así sobre la marcha, ¿pero ves la idea?


#3

Es que eso es lo único que se me ocurre, pero cómo tú bien has dicho
me parece cutre. Por eso me decidí a preguntar…
De todas maneras, muchísimas gracias por contestar.


#4

Tengo una vista que contiene un formulario. Además tengo un array de datos
que se construye dinámicamente.Pero no sé cómo enviarlo en el formulario.
Por ej.@misdatos=[“1”,“2”]

si intento algo así dentro del formulario,
<input type=‘hidden’ name=‘misdatos’ value=<%=@misdatos%>>

vamos por partes…

de toda la vida en html en un formulario tú puedes poner varios campos
con el mismo nombre. Por ejemplo:

Y eso en el lado del servidor se recibe como un array de parámetros (en
concreto se envían los valores separados por comas al servidor)

Para que rails sea capaz de entender que lo que le llega es
efectivamente un campo multivaluado, lo que tenemos que hacer es
simplemente ayudarle un poquito y en el nombre del campo ponerle [].
Cuando rails ve un nombre así, entiende que es un array y lo separa en sus
partes y a ti te lo da como array en el lado del servidor.

@misdatos.each do |campo|
<%=hidden_field_tag ‘misdatos[]’,campo %>
end

Con eso deberías poder recibir en el servidor el array sin problemas

saludos,

javier ramírez


Estamos de estreno… si necesitas llevar el control de tus gastos
visita http://www.gastosgem.com !!Es gratis!!


#5

Ok, funcionó!!!
Muchísimas gracias