Tengo una duda, al crear un objeto debe recibir las variables de todo
formulario y luego grabarlo
@receta = Receta.new(@params[‘receta’])
@receta.save
He visto en algunos sitios que lo hace
así:@receta = Receta.new(@params[:receta])
Cuál es la manera correcta: entre comillas o con : ?
El Viernes, 1 de Diciembre de 2006 10:12, Miguel Angel Calleja Lázaro
escribió:
He visto en algunos sitios que lo hace así:
@receta = Receta.new(@params[:receta])
Cuál es la manera correcta: entre comillas o con : ?
Sin ‘@’ y con ‘:’ (o sea, usando el método ‘params’ y el símbolo ‘:receta’).
params[:receta]
Saludos.
–
Imobach González Sosa
banot.net
Correo-e: imobachgs en banot punto net
On Dec 1, 2006, at 11:12 AM, Miguel Angel Calleja Lázaro wrote:
Tengo una duda, al crear un objeto debe recibir las variables de todo
formulario y luego grabarlo
@receta = Receta.new(@params[‘receta’])
@receta.save
He visto en algunos sitios que lo hace así:
@receta = Receta.new(@params[:receta])
Cuál es la manera correcta: entre comillas o con : ?
Ambas son correctas, ocurre que Rails usa unos hashes extendidos para
los que “foo” y :foo se ven como la misma llave internamente. Si bien
hay cierta tendencia Rubyesca a usar simbolos para llaves de ese
tipo, son como mas limpios y son unicos en el interprete (“foo” y
“foo” son distintas porque en Ruby las cadenas son mutables).
Lo que no hay que usar modernamente es @params, lo recomendado es el
accessor params:
Receta.new(params[:receta])
– fxn
P.D.: Los hashes extendidos estan implementados aqui:
activesupport/lib/active_support/core_ext/hash/indifferent_access.rb
On 12/1/06, Xavier N. [email protected] wrote:
Cuál es la manera correcta: entre comillas o con : ?
Ambas son correctas, ocurre que Rails usa unos hashes extendidos para
los que “foo” y :foo se ven como la misma llave internamente. Si bien
hay cierta tendencia Rubyesca a usar simbolos para llaves de ese
tipo, son como mas limpios y son unicos en el interprete (“foo” y
“foo” son distintas porque en Ruby las cadenas son mutables).
Los desarrolladores de rails crearon una extensión que se llama
HashWithIndiferentAccess, que permite acceder a los elementos de un
hash,
tanto con cadenas como con sÃmbolos.
Esto posiblemente sea poco adecuado, y hay mucha gente a la que no le
gusta,
pero ayuda bastante a la gente que está empezando.
En Ruby 1.9, los sÃmbolos serán strings. Es decir:
:notice.is_a?(String) => true
Asà que la extensión HashWithIndiferentAccess, ya no hará falta.
La cuestión es ¿Cuál será entonces la diferencia entre un string y un
sÃmbolo? Pues un sÃmbolo es un string “congelado”, que no se puede
modficar
(como si hubieras hecho cadena = “hola”.freeze)
Un saludo.
Lo que no hay que usar modernamente es @params, lo recomendado es el