Concatenare una stringa al nome variabile

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

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 :stuck_out_tongue:

Ciao

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

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