Hola,

Estaba mostrando un registro que tiene muchos campos y me di cuenta de que no podía seguir copiando y pegando la línea <tr><th>Etiqueta</th><td>Campo</td></tr>.

Supongo que tiene que haber una manera más elegante. Probé la de abajo y funciona, salvo para el campo contratista.nombre. Funciona tanto 'campo' como :campo pero no sé si hay manera de pedirle un campo de un objeto asociado (y no sé si es más "a la ruby").

<table>
<% for i in [
{:label => 'Fecha',:field => 'date'},
{:label => 'Contratista',:field => 'contratista.nombre'},
{:label => 'Desde',:field => :desde},
{:label => 'Hasta',:field => :hasta},
{:label => 'Monto',:field => :amount}
] %>
<tr>
<th><%= i[:label] %></th><td class="sinborde"><%= @contrato.send(i[:field]) %></td>
</tr>
<% end %>
</table>

En realidad puede ser que esté rompiendo varios patrones a la vez :). De repente tengo que digerir todo en el controlador y pasarlo a la vista, pero quedaba bastante bien así, como que se "ve" todo.

¿Ruby no tiene algo que me permita transformar un string a una llamada?

O podría poner algo como :field => @contrato.contratista.nombre pero ahí estoy repitiendo @contrato, salvo que haya algo como el 'with' de Java, pero no me doy cuenta.

Saludos, Eduardo.
_______________________________________________
Ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar

Responder a