Ruby Forum Rails-ES > Llamadas a funciones con parámetros opcionales

Posted by Fernando Calatayud (fernan2)
on 06.05.2008 14:32
Hola a todos, se trata de una consulta para dejar el código más
limpio...

Ahora mismo tengo esta declaración:
  def campo(form, campo, tipo="text", clase_campo="", texto_label="")

Y para la llamada pasando texto_label, simplemente hago
  campo(f, "nombre", "", "", "Nombre del vino")

El problema es que esto es... feo. Funciona, pero es feo. Yo quiero
hacer una llamada más al estilo ruby, algo así:
  campo(f, "nombre", :texto_label => "Nombre del vino")

¿Cómo tengo que hacer la declaración para que recoja esto?

s2 y gracias!!
Posted by Sergio Cambra .:: entreCables - Symbol Servicios (Guest)
on 06.05.2008 14:41
(Received via mailing list)
El Tuesday 06 May 2008 14:32:46 Fernando Calatayud escribió:
> hacer una llamada más al estilo ruby, algo así:
>   campo(f, "nombre", :texto_label => "Nombre del vino")
>
> ¿Cómo tengo que hacer la declaración para que recoja esto?
>
> s2 y gracias!!

def campo(form, campo, opciones={})
  opciones = {:tipo => 'text'}.merge opciones
  ...
end
y despues accederias a tipo, clase_campo y texto_label a traves de 
opciones
opciones[:tipo]
opciones[:clase_campo]
opciones[:texto_label]

--
Sergio Cambra .:: entreCables - Symbol Servicios Informáticos S.L. ::.
Nicolás Guillén 6, locales 2 y 3. 50.018 Zaragoza
T) 902 021 404 F) 976 52 98 07 E) sergio@entrecables.com
Posted by Fernando Calatayud (fernan2)
on 06.05.2008 14:56
Sergio Cambra .:: entreCables - Symbol Servicios
  wrote:
> El Tuesday 06 May 2008 14:32:46 Fernando Calatayud escribió:
>> hacer una llamada más al estilo ruby, algo así:
>>   campo(f, "nombre", :texto_label => "Nombre del vino")
>>
>> ¿Cómo tengo que hacer la declaración para que recoja esto?
>>
>> s2 y gracias!!
> 
> def campo(form, campo, opciones={})
>   opciones = {:tipo => 'text'}.merge opciones
>   ...
> end
> y despues accederias a tipo, clase_campo y texto_label a traves de 
> opciones
> opciones[:tipo]
> opciones[:clase_campo]
> opciones[:texto_label]
> 
> --
> Sergio Cambra .:: entreCables - Symbol Servicios Informáticos S.L. ::.
> Nicolás Guillén 6, locales 2 y 3. 50.018 Zaragoza
> T) 902 021 404 F) 976 52 98 07 E) sergio@entrecables.com


Justo lo que quería, muchas gracias!!