Pasar nil a una accion

hola lista, como estan…

pregunta: puedo pasarle nil a una accion? ya sea en un controllador o en
una clase del modelo?

ejemplo: si defino una accion en un controllador la cual resive 2
parametros, en algun momento puedo entregar nil a uno de esos
parametros?

class AlgunosController << AplicationController

def metodo(A, B)

if A
   Class.funcion(A,B)
else
   Class.funcion(nil,B)

end
end

la clase Class la funcion esta definida de la misma manera que
en el controlador, si resive los 2 parametros hace algo, y si resive 1
parametro se comporta distinto.

grax.

El día 24 de febrero de 2009 16:57, Christian R.
[email protected]
escribió:> pregunta: puedo pasarle nil a una accion? ya sea en un controllador o en

una clase del modelo?
ejemplo: si defino una accion en un controllador la cual resive 2
parametros, en algun momento puedo entregar nil a uno de esos
parametros?

Se suele llamar “acciones” a los métodos de los controladores a los
que se tiene acceso desde las rutas, y esos reciben los parámetros en
el objeto params. Supongo que te refieres a un método y no a una
“acción”. Y sí, un método puede recibir nil.

class AlgunosController << AplicationController

Deberías revisar la sintaxis :wink:

def metodo(A, B)
De nuevo, deberías revisar la sintaxis: en ruby es importante la
distinción entre mayúsculas y minúsculas.

if A
Class.funcion(A,B)
else
Class.funcion(nil,B)
end
end

la clase Class la funcion esta definida de la misma manera que
en el controlador, si resive los 2 parametros hace algo, y si resive 1
parametro se comporta distinto.

Sin ver el ejemplo concreto, sólo avisarte que esto suele ser un “code
smell”, un síntoma de que puede haber algún problema en la
organización del código.

ok, lo de accion y metodo no lo tenia claro, grax, en realidad no quiero
pasarle el nil a un metodo, sino que a una accion, me imaguino que se
puede de la misma manera que a un metodo, me podrias dejar claro eso
plz.

Deber�as revisar la sintaxis :wink:

si, escribi el ejemplo a la rapida para que me entendieran nomas, grax
:smiley:

Sin ver el ejemplo concreto, s�lo avisarte que esto suele ser un “code
smell”, un s�ntoma de que puede haber alg�n problema en la
organizaci�n del c�digo.

en realidad todavia no tengo nada de codigo escrito, lo que pasa es que
estoy diseñando un sistema de coordinacion de proyectos para una empresa
de desarrollo de software, y por el momento estoy diseñando el software
utilizando RUP por lo que ahora estoy trabajando en los diagramas de
secuencia y los CU.

grax.

El día 24 de febrero de 2009 17:24, Christian R.
[email protected] escribió:

ok, lo de accion y metodo no lo tenia claro, grax, en realidad no quiero
pasarle el nil a un metodo, sino que a una accion, me imaguino que se
puede de la misma manera que a un metodo, me podrias dejar claro eso
plz.

Creo que tenemos conceptos distintos de lo que es una acción y un
método (mi versión la tienes en mi mail anterior). ¿Qué diferencias
ves entre una acción y un método?

Sin ver el ejemplo concreto, s�lo avisarte que esto suele ser un “code
smell”, un s�ntoma de que puede haber alg�n problema en la
organizaci�n del c�digo.

en realidad todavia no tengo nada de codigo escrito, lo que pasa es que
estoy diseñando un sistema de coordinacion de proyectos para una empresa
de desarrollo de software, y por el momento estoy diseñando el software
utilizando RUP por lo que ahora estoy trabajando en los diagramas de
secuencia y los CU.

A eso me refiero: estás diseñando el código de tu sistema,
planificando cómo van a coordinarse sus elementos. Si en tu diseño hay
una función que cuando recibe dos parámetros hace una cosa y cuando
recibe uno hace otra completamente distinta suele significar que hay
que revisar un poco el diseño de esa parte del sistema.

Podrias evaluar en el metodo el valor de los parametros
recibidos. Por ejemplo si se trata de un buscador de texto puedes decir:

if A="" …

que es equivalente a decir que A es nil, domo te digo depende del tipo
de parametros de entrada.

Un saludo

El día 24 de febrero de 2009 18:13, Jose vicente Ribera pellicer
[email protected]
escribió:> Podrias evaluar en el metodo el valor de los parametros

recibidos. Por ejemplo si se trata de un buscador de texto puedes decir:

if A=“” …

que es equivalente a decir que A es nil, domo te digo depende del tipo
de parametros de entrada.

No, esto NO ES ASÍ. Por favor no enviéis este tipo de errores a la lista:

  1. en este ejemplo A es una constante, si va a usar una variable debe
    ir en minúscula
  2. estás asignando la cadena vacía a A, no comparando. Para comparar se usa
    ==
  3. aunque estuvieras usando ==, tu ejemplo está mal: nil es una cosa y
    la cadena vacía es otra:
    ~ $ irb

nil == “”

=> false

Repito: por favor no enviéis este tipo de afirmaciones y de código a
la lista sin comprobarlo antes.

Gracias.

El día 24 de febrero de 2009 18:13, Jose vicente Ribera pellicer
[email protected]
escribió:> Podrias evaluar en el metodo el valor de los parametros

recibidos. Por ejemplo si se trata de un buscador de texto puedes decir:

if A=“” …

que es equivalente a decir que A es nil, domo te digo depende del tipo
de parametros de entrada.

No, esto NO ES ASÍ. Por favor no enviéis este tipo de errores a la lista:

  1. en este ejemplo A es una constante, si va a usar una variable debe
    ir en minúscula
  2. estás asignando la cadena vacía a A, no comparando. Para comparar se usa
    ==
  3. aunque estuvieras usando ==, tu ejemplo está mal: nil es una cosa y
    la cadena vacía es otra:
    ~ $ irb

nil == “”

=> false

Repito: por favor no enviéis este tipo de afirmaciones y de código a
la lista sin comprobarlo antes.

Gracias.

Me sumo a la petición de Raul: intentad no enviar errores flagrantes
como
este por favor, ya que pueden hacer confundir a la gente que está
aprendiendo. En este hilo hay muchos errores con cosas básicas, que ni
tan
si quiera son de Rails, sinó que son de base, de Ruby. Aprovecho pues
este
hilo para hacer hincapié en la importancia de aprender Ruby para no
cometer
errores como estos que nos os va a dejar avanzar mucho.
Un saludo.

2009/2/24 Raul M. [email protected]