Link_to con parámetros 'anidado'

Hola gente,

Ya sé que el término anidado confunde un poco pero no sabía como
resumir lo siguiente:

Me gustaría hacer un link con parámetros al estilo form_for, es decir
con parámetros que tuvieran esta forma:

modelo[atributo]

Tengo esto:
link_to(
puntos,
:controller => ‘votos’,
:action => ‘votar’,
:voto => {
:charla_id => charla.id,
:puntos => puntos
}
)

Y me gustaría que me generase esto:
/votos/votar?voto[charla_id]=55&voto[puntos]=2

Pero me genera esto:
/votos/votar?voto=charla_id55puntos2

He probado cosas como ésta:
link_to(
puntos,
:controller => ‘votos’,
:action => ‘votar’,
:voto[charla_id] => charla.id
)

Pero, aparte de fecho, no funa.

Cualquier sugerencia es bienvenida.

f.

2008/9/25 Fernando G. [email protected]:

He probado cosas como ésta:
link_to(
puntos,
:controller => ‘votos’,
:action => ‘votar’,
:voto[charla_id] => charla.id
)

No lo he probado, pero ¿has intentado con cadenas en vez de símbolos?

“voto[charla_id]” => charla.id

No es tan bonito como el hash anidado, pero…

Suerte

El día 25 de septiembre de 2008 21:43, Daniel R.
Troitiño[email protected]
escribió:>

“voto[charla_id]” => charla.id

Sip… así funciona:
‘voto[charla_id]’ => @charla.id,

Para un apuro vale.

:slight_smile:

f.

No puedo reproducir tu fallo, a mí este código:
<%= link_to ‘Pruebas’,
:controller => ‘votos’,
:action => ‘votar’,
:voto => {
:charla_id => 3,
:puntos => 2
} %>

Me genera:
href=“votos/votar?voto[charla_id]=3&voto[puntos]=2”

…que es justo lo que buscas. Estoy con Rails 2.1.0.
¿A ti no te funciona? qué versión de rails estas usando? ¿quizá lo estas
probando en consola y no te aparecen los caracteres [] ?

2008/9/25 Fernando G. [email protected]

Fernando G. wrote:

/votos/votar?voto[charla_id]=55&voto[puntos]=2

Que URL más rara… ¿por qué no quieres algo más normal, como
/votos/votar?charla=55&puntos=2 ? Lo que haces tú me parecen ganas de
buscarse problemas… yo no lo usaría sin haber probado antes que
funciona en todos los navegadores, porque es fácil que con alguno dé
problemas.

s2

Fernando C. wrote:

Fernando G. wrote:

/votos/votar?voto[charla_id]=55&voto[puntos]=2

Que URL más rara… ¿por qué no quieres algo más normal, como
/votos/votar?charla=55&puntos=2 ? Lo que haces tú me parecen ganas de
buscarse problemas… yo no lo usaría sin haber probado antes que
funciona en todos los navegadores, porque es fácil que con alguno dé
problemas.

s2

O mejor aún:
/charla/55/votar?puntos=2
/charla/55/votar/2

Mucho más bonito y más corto que
/votos/votar?voto[charla_id]=55&voto[puntos]=2

s2

El día 25 de septiembre de 2008 22:28, Juanjo
Bazán[email protected]
escribió:> href=“votos/votar?voto[charla_id]=3&voto[puntos]=2”

…que es justo lo que buscas. Estoy con Rails 2.1.0.
¿A ti no te funciona? qué versión de rails estas usando? ¿quizá lo estas
probando en consola y no te aparecen los caracteres [] ?

Tienes toda la razón, en rails 2.1 funciona… es que ando con una
aplicación en rails 1.2.3… cagüen :slight_smile:

charla + votar + rails 1.2.3 = me imagino que ya sabes para que es esto
:stuck_out_tongue:

Gracias.

f.

El día 26 de septiembre de 2008 9:55, Fernando C.
[email protected]
escribió:> Fernando G. wrote:

/votos/votar?voto[charla_id]=55&voto[puntos]=2

Que URL más rara… ¿por qué no quieres algo más normal, como
/votos/votar?charla=55&puntos=2 ? Lo que haces tú me parecen ganas de
buscarse problemas… yo no lo usaría sin haber probado antes que
funciona en todos los navegadores, porque es fácil que con alguno dé
problemas.

Porque quería hacer esto en el controlador:

  @voto = Voto.new(params[:voto])

Y no:
@voto = Voto.new
@voto.charla_id = params[:charla_id]
@voto.puntos = params[:puntos]

f.

El día 26 de septiembre de 2008 9:59, Fernando C.
[email protected]
escribió:

O mejor aún:
/charla/55/votar?puntos=2
/charla/55/votar/2

Tienes razón… esta última es muy guapa… y con una ruta a propósito
puedo hacer lo que quería en el controlador.

Gracias
f.

2008/9/26 Fernando G. [email protected]

Porque quería hacer esto en el controlador:

 @voto = Voto.new(params[:voto])

Y no:
@voto = Voto.new
@voto.charla_id = params[:charla_id]
@voto.puntos = params[:puntos]

Ahí te vale con:
@voto = Voto.new(params)

2008/9/26 Juanjo Bazán [email protected]:

 @voto.charla_id = params[:charla_id]
 @voto.puntos = params[:puntos]

Ahí te vale con:
@voto = Voto.new(params)

Nop, por lo menos no en R1.2.3:

Processing VotosController#votar (for 127.0.0.1 at 2008-09-26 14:18:19)
[GET]
Session ID: 91c1ad0bf97803325ba596dc78539f24
Parameters: {“charla_id”=>“71”, “action”=>“votar”,
“controller”=>“votos”, “puntos”=>“5”}

NoMethodError (undefined method action=' for #<Voto:0x2400a40>): /vendor/rails/activerecord/lib/active_record/base.rb:1857:in method_missing’

:confused:

f.

On Fri, Sep 26, 2008 at 2:19 PM, Fernando G.
[email protected]wrote:

Y no:
@voto = Voto.new
@voto.charla_id = params[:charla_id]
@voto.puntos = params[:puntos]

Ahí lo que tienes es un error en el forumlario, que está mal hecho. Si
no me
equivoco.