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