Recibir variables del formulario

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