ruby on rails - tutorial - ¿Cómo paso múltiples argumentos a un método Ruby como una matriz?
tutorial django (3)
Solo llámalo de esta manera:
table_for(@things, *args)
El operador splat
( *
) hará el trabajo, sin tener que modificar el método.
Tengo un método en un archivo de rails helper como este
def table_for(collection, *args)
options = args.extract_options!
...
end
y quiero poder llamar a este método así
args = [:name, :description, :start_date, :end_date]
table_for(@things, args)
para poder pasar dinámicamente los argumentos basados en un commit de formulario. No puedo reescribir el método, porque lo uso en demasiados lugares, ¿de qué otra manera puedo hacer esto?
Ruby maneja bien varios argumentos.
Este es un buen ejemplo.
def table_for(collection, *args)
p collection: collection, args: args
end
table_for("one")
#=> {:collection=>"one", :args=>[]}
table_for("one", "two")
#=> {:collection=>"one", :args=>["two"]}
table_for "one", "two", "three"
#=> {:collection=>"one", :args=>["two", "three"]}
table_for("one", "two", "three")
#=> {:collection=>"one", :args=>["two", "three"]}
table_for("one", ["two", "three"])
#=> {:collection=>"one", :args=>[["two", "three"]]}
(Salida cortada y pegada de irb)
class Hello
$i=0
def read(*test)
$tmp=test.length
$tmp=$tmp-1
while($i<=$tmp)
puts "welcome #{test[$i]}"
$i=$i+1
end
end
end
p Hello.new.read(''johny'',''vasu'',''shukkoor'')
# => welcome johny
# => welcome vasu
# => welcome shukkoor