Entre fechas y bichos en Rails 2.0

Un bug sobre mi cabeza Al trabajar sobre las fechas en los Form Helpers de Rails, hemos conseguido un bug bastante peculiar, tiene mucho que ver con el uso de los helpers para crear varios elementos de una misma clase de Objetos; este consiste incialmente en colocar un par de corchetes ([]) alrededor del nombre del objeto que queremos crear, de esta forma podemos enviar multiples objetos de una vez en el request del Navegador. Por ejemplo, cuando tenemos el siguiente codigo en un archivo rhtml (en Rails 2.0 sería html.erb) <% form_tag :url => personas_path do %>   <%# Persona 1 %>   <%= text_field 'persona[]', :nombre %>   <%= date_select 'persona[]', :cumple %>   <%# Persona 2 %>   <%= text_field 'persona[]', :nombre %>   <%= date_select 'persona[]', :cumple %> <% end %> Esto dibujaría un HTML de la siguiente forma: <form action="/personas" method="post"> <!-- Persona 1 --> <input id="persona__nombre" name="persona[][nombre]" size="30" type="text" /> <select id="persona_cumple_1i" name="persona[cumple(1i)]"> ... </select> <select id="persona_cumple_2i" name="persona[cumple(2i)]"> ... </select> <select id="persona_cumple_3i" name="persona[cumple(3i)]"> ... </select> <!-- Persona 2 --> <input id="persona__nombre" name="persona[][nombre]" size="30" type="text" /> <select id="persona_cumple_1i" name="persona[cumple(1i)]"> ... </select> <select id="persona_cumple_2i" name="persona[cumple(2i)]"> ... </select> <select id="persona_cumple_3i" name="persona[cumple(3i)]"> ... </select> </form> Si se dan cuenta, pueden ver que los selects generados no poseen los [] en el nombre, de hecho los ignora por completo. Esto trae como consecuencia de que cuando se cree el objeto de Persona vía mass-assignment def create   Persona.create(params[:persona]) # <= esto crearía varias personas a la vez end se genere un error difícil de detectar en el código de nuestro proyecto. Después de "googlear" un poco, me di cuenta que es un bug registrado desde hace 2 versiones, por suerte conseguí un patch que me sirvio perfectamente para solucionar este problema. Les dejo el link del ticket en caso de que lo necesiten: http://dev.rubyonrails.org/ticket/10551

You have already tagged this post. Your tags:

Noticia original: www.lacaraoscura.com

Valid XHTML 1.0 Strict