# Concatenare una stringa al nome variabile

**URL:** <https://www.ruby-forum.com/t/concatenare-una-stringa-al-nome-variabile/205961>\
**Category:** IT\
**Created:** [April 19, 2011, 3:12pm UTC](https://www.ruby-forum.com/t/concatenare-una-stringa-al-nome-variabile/205961 "2011-04-19T15:12:22Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![luislavena](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/0ea827/32.png) [@luislavena](https://www.ruby-forum.com/u/luislavena)\
**Post date:** [April 19, 2011, 3:12pm UTC](https://www.ruby-forum.com/t/concatenare-una-stringa-al-nome-variabile/205961/1 "2011-04-19T15:12:22Z")

</div>

Salve a tutti,  
come nuovo utilizzatore di ruby ogni tanto incontro qualche difficoltà,  
avrei bisogno di un piccolo aiuto:  
Avrei bisogno di sapere come concatenare al nome di un simbolo un valore  
stringa, del tipo

in view/show ho il codice seguente

\<% form\_tag(:action =\> ‘set\_value’) do %\>  
\<% i = 0 %\>  
\<% for mgrn in @mgr -%\>

 "\> \<%= h(mgrn.owner) %\> | \<%= h(mgrn.mgr\_name) %\> \<%= check\_box ("post", "green\_#{i}")%\> \<%= check\_box ("post", "red\_#{1}")%\> \<% i += 1 %\> \<% end -%\> \<%= submit\_tag ("Set") %\> \<% end %\>

Che mi inserisce due check\_box per riga. Non conosco a priori quante  
righe avrò, indichiamo dunque N righe. Avrò quindi green\_0, green\_1,  
green\_2 etc…

Nel file controller nella action ‘set\_value’ voglio prima fare un  
controllo sui valori del check\_box (es:green\_0 + red\_0; green\_1 + red\_1  
etc…). Ho scritto il seguente codice, ma non funziona. Qualcuno  
saprebbe dirmi la sintassi corretta per effettuare i controlli che prima  
indicavo? (es: green\_1 + red\_1)

i = 0  
@mgr.each do |mgr|  
# … parte di codice che controlla se sono arrivato a N…  
if ((params[“post”][“green\_#{i}”]) + (params[“post”][“red\_#{i}”]) \>  
1)  
# …fai qualcosa…  
else  
# …fai altro…  
end  
i +=1  
end

Grazie a tutti

---

<div class="post-metadata">

**Author:** ![mballante](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/b77776/32.png) [@mballante](https://www.ruby-forum.com/u/mballante)\
**Post date:** [April 19, 2011, 3:20pm UTC](https://www.ruby-forum.com/t/concatenare-una-stringa-al-nome-variabile/205961/2 "2011-04-19T15:20:55Z")

</div>

purtroppo non ho idea di come aiutarti in concreto, anche io sono  
all’inizio  
e non mi son confrontato ancora con un problema del genere, ma a  
sensazione  
credo che sia l’approccio sbagliato, almeno da quello che ho capito fino  
ad  
adesso di Rails probabile che se non ti metti a numerare tutti i  
controlli  
in ogni riga poi nel controller ti ritrovi un array recuperabile via  
params(:green) e params(:red) o comuqnue credo che esista una strada per  
evitare di starsi a numerare i controlli.

Probabilmente ho scritto un mare di castronerie, comunque stasera a casa  
controllo, cos eventualmente imparo qualcosa 😛

Ciao

---

<div class="post-metadata">

**Author:** ![mballante](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/b77776/32.png) [@mballante](https://www.ruby-forum.com/u/mballante)\
**Post date:** [April 20, 2011, 2:09pm UTC](https://www.ruby-forum.com/t/concatenare-una-stringa-al-nome-variabile/205961/3 "2011-04-20T14:09:35Z")

</div>

Anziché

```
@mgr.each do |mgr|

```

usa

```
@mgr.each_with_index do |mgr, i|

```

Da Ruby 1.8.6 almeno c’è questo comodo iteratore su Enumerable…

Eccoti l’RDoc:  
[http://www.ruby-doc.org/core/classes/Enumerable.html#M001511](http://www.ruby-doc.org/core/classes/Enumerable.html#M001511)

---

<div class="post-metadata">

**Author:** ![mballante](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/b77776/32.png) [@mballante](https://www.ruby-forum.com/u/mballante)\
**Post date:** [April 25, 2011, 4:56pm UTC](https://www.ruby-forum.com/t/concatenare-una-stringa-al-nome-variabile/205961/4 "2011-04-25T16:56:17Z")

</div>

marco bala wrote in post #993748:

> Avrei bisogno di sapere come concatenare al nome di un simbolo un valore  
> stringa, del tipo  
> […]  
> green\_0, green\_1, green\_2 etc..

Devi usare il metodo to\_sym che converte una stringa in simbolo, come in

for i in 1 .. 10 do  
puts esempio[“green\_#{i}”.to\_sym]  
end

Paolo
