2009-06-11 3 views
0

J'ai ce code:rubis - chaussures - fonction edit_line appel

Shoes.app do 

    data = [1,2,3,4] # could be also more 

    data.each { |i| 
    edit_line ("foo"){ puts i} 
    } 

end 

lorsque la valeur (foo) changement dans le champ de edit_line, je vois dans le terminal 1,2,3 ou 4. Mais j'ai besoin la valeur (.txt) de chaque champ edit_line. Comment puis-je y faire référence? Le problème est que les données sont dynamiques et peuvent avoir n entrées.

En php il y a quelque chose comme $$ var y a-t-il quelque chose dans ruby? peut-être que cela pourrait aider.

+0

La réponse de Pesto fonctionne, alors pourquoi n'acceptez-vous pas cette réponse pour que cette question puisse être close? – peter

Répondre

0

Un ami m'a fait remarquer ceci:

data.each_index { |i| data[i] = edit_line() { data[i].text } } 
0

Puisque vous avez besoin à la fois l'index et les données qui y sont stockées, vous voulez #each_with_index. Je ne l'ai jamais utilisé chaussures donc je ne peux pas aider avec cette partie, mais #each_with_index fonctionne comme si:

data = ["cat", "bat", "rat"] 
data.each_with_index {|i, d| print "#{i} => #{d} "} 

Ce imprimerai: 0 => chat 1 => chauve-souris 2 => rat

2

Si vous voulez juste voir les données quand un changement de edit_line, vous pouvez utiliser la méthode change et la méthode text:

Shoes.app do 

    data = [1,2,3,4] # could be also more 

    data.each do |i| 
    edit_line('foo').change do |e| { puts "#Edit Line #{i} Changed: #{e.text}" } 
    end 
end 

Depuis le bloc par défaut au edit_line méthode fait la même chose, vous pouvez simplifier à:

Shoes.app do 

    data = [1,2,3,4] # could be also more 

    data.each do |i| 
    edit_line 'foo' do |e| { puts "#Edit Line #{i} Changed: #{e.text}" } 
    end 
end 

Notez également que l'utilisation do/end au lieu de {} pour les blocs multi-lignes est le style préféré.