fearx
September 25, 2008, 9:06pm
1
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.
fearx
September 25, 2008, 9:43pm
2
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
fearx
September 25, 2008, 10:14pm
3
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.
f.
fearx
September 25, 2008, 10:28pm
4
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]
fearx
September 26, 2008, 9:55am
5
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
fearx
September 26, 2008, 9:59am
6
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
fearx
September 26, 2008, 9:53am
7
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
charla + votar + rails 1.2.3 = me imagino que ya sabes para que es esto
Gracias.
f.
fearx
September 26, 2008, 11:42am
8
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.
fearx
September 26, 2008, 11:42am
9
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.
fearx
September 26, 2008, 2:13pm
10
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)
fearx
September 26, 2008, 2:19pm
11
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’
f.
fearx
September 26, 2008, 2:54pm
12
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.