[ruby-it] convertire una string in un campo db
David
david.palm a iperbole.bologna.it
Ven 21 Dic 2007 15:00:27 CET
Per prima cosa mi sento di consigliarti di spostare il codice verso il controller (e magari anche il model) e lasciare il view il più pulito possibile. Credimi, ne va della tua salute a lungo termine! :-)
La risposta veloce è "usa send()", e cioè, togli
<% campo = "bioex_item." + ex_field[i].to_s%>
...e la riga sotto diventa:
<td><b><%= bioex_item.send(ex_field[i]) %></b></td>
Un modo un po' più pulito di farlo potrebbe essere:
nel controller preparare un hash sifatto:
@fields_and_labels = {
'Data' => 'date_bio',
'G.bianchi' => 'gb_bio',
'Emoglobina' => 'hb_bio'
}
(ci sono probabilmente modi più furbi per assegnare label ai campi, magari facendo un override di ActiveRecord::ConnectionAdapters::Colum#human_name)
e nella view avere qualcosa così:
<table>
<% @fields_and_labels.each do |field_label, field_attr| %>
<tr>
<td><b><%=h field_label %></td>
<% for bioex_item in @patient.bioex_items %>
<td><b><%= bioex_item.send( field_attr ) %></td>
<% end %>
</tr>
<% end %>
</table>
On Fri, 21 Dec 2007 14:37:47 +0100, harloc wrote:
> Ciao,
> forse il titolo non spiega bene quello che sto cercando.
> Ho fatto un ciclo in questo modo:
>
> <% ex_title = ["Data", "G.bianchi", "Emoglobina"]%>
> <% ex_field = ["date_bio", "gb_bio", "hb_bio"]%>
>
> <table>
> <% ex_field.length.times do |i|%>
> <tr>
> <td>
> <b><%=ex_title[i]%></b>
> </td>
> <% for bioex_item in @patient.bioex_items %>
> <% campo = "bioex_item." + ex_field[i].to_s%>
> *** <td><b><%= campo%></b></td>
> <% end %>
>
> </tr>
> <% end%>
> </table>
>
> dove ho posizionato gli asterischi vorrei che la stringa fosse
> convertita nel valore del campo del DB, come se
> scrivessi bioex_item.date_bio (la prima volta per esempi).
> Conoscete un metodo per fare quello che voglio?
> Grazie,
> ciao marco
Maggiori informazioni sulla lista
Ml