El Jueves, 25 de Enero de 2007 11:08, Andres escribió:
Hola… muchas gracias ante todo por vuestra ayuda.
Para pasar un dato hasta ahora he hecho lo siguiente:
en el html:
<%= link_to ‘Nueva incidencia’, :controller => ‘incidencias’, :action =>
‘new’, :id => incidencia.Cliente_id%>
“Cliente_id” deberÃa ir con minúscula. En Ruby, lo que empieza con
mayúsculas,
es una constante. Además, no hace falta añadir el “_id”
(incidencia.cliente
bastarÃa).
y en el controller:
@params[:id]
El uso de la variable de instancia @params está desaconsejado.
me retornaba los datos.
pero con ‘new’, no funciona ¿pq?
No sé exactamente a qué te refieres, pero voy a suponer algunas cosas
(corrÃgeme si me equivoco). En principio, tu método “new” te lleva a un
formulario para rellenar algunos datos (y se supone que le has pasado el
‘id’
del cliente). Pero si en tu formulario no pones un campo “hidden” o algo
asÃ
con ese valor, al pulsar el botón, no lo va a mandar (es una acción
separada
de la primera).
Solución: usa un campo hidden en el formulario del new. Si este no es tu
caso,
olvida lo que he dicho.
@incidencias.Cliente_id = @params[:id]
Esto no me parece una buena idea; intento evitar siempre que puedo el
acceso
directo a los identificadores. Te aconsejo que:
- en lugar de pasar el parámetro “:id => incidencia.cliente_id” pasa un
parámetro “:cliente_id => incidencia.cliente”.
- en el formulario “new” tendrás que poner un campo tipo “hidden” que
se
llame “cliente_id” y que tenga ese valor.
Y nada más. Al hacer un "Incidencia.new(params[:incidencia]) él verá que
hay
un campo “:cliente_id” y se encargará del resto.
Saludos.
–
Imobach González Sosa
banot.net
Correo-e: imobachgs en banot punto net