2011-05-21 27 views
17

que tienen algo como esto:griales g: pase enlace params

<g:each in="${temp}"> 

    <li>Date: ${it.dateParticipated}, <br>Role: ${it.role}, <br>Acceptence: ${it.accepted}, <br> 
    <g:link controller="conference" action="participated" id="${it.conference.id}"> 
    Conference: </g:link>${it.conference},<br> 
Role: ${it.role}, <br>Status: ${it.status}</li><br> 

    <br> 
</g:each> 

Lo que quiero hacer es, cuando hago clic en 'Conferencia', la 'conferencia' controlador con el método 'participado' está cargado , y se pasa el params 'it.conference'. ¿Cómo puedo pasar este parámetro en la etiqueta g: link?

Lo necesito porque, cuando hago clic en la palabra 'conferencia', otra página se carga con los detalles de la conferencia con el ID pasado.

Respuesta

29

Use los parametros atribuyen a pasar en un mapa de parámetros:

<g:link action="/conference/participated" id="${it.conference.id}" params="[foo: 'bar', bar: 'foo']">My Link!</g:link> 

Ver the documentation para más ejemplos.

+0

lo leí. pero no entiendo cómo puedo pasar 'it.conference' a través de él. – robert

+0

¿La conferencia es un objeto en toda regla o una primitiva? –

+2

No es terriblemente obvio en la documentación, pero se quitan las comillas para referirse a una variable establecida en la acción anterior – barrymac

3
params="[customerId: customer.id]" 
3

Debe envolver todos sus parámetros con $ {}, en lugar de envolver todas las variables que desea pasar por separado.

<g:each in="${temp}"> 

    <li>Date: ${it.dateParticipated}, <br>Role: ${it.role}, <br>Acceptence: ${it.accepted}, <br> 
    <g:link controller="conference" action="participated" params="${[id: it.conference.id, role: it.role, status: it.status]}"> 
    Conference: </g:link> 

    <br> 
</g:each>