Novedades en Edge Rails #13
| Nota: Esta entrada es una traducción de la publicada el 6 de Febrero de 2009 por Mike Gunderloy en el blog de Ruby on Rails. |
La gran noticia de esta semana, por supuesto, ha sido el lanzamiento de Rails 2.3 RC1. Ha habido una actividad considerable desde este estreno, teniendo sobre todo que ver con poner las cosas en su sitio y arreglar los fallos basándose en los informes de error enviados por los usuarios. Gracias a todos por las pruebas, y ¡sobre todo seguir así!
Soporte para formularios anidades en ActiveRecord y ActionPack
Esto es tan importante que tuvo su propia entrada del blog oficial Hay dos partes en este cambio. En primer lugar, ActiveRecord ahora puede actualizar los atributos de los modelos anidados directamente, siempre que se lo digamos:
class Book < ActiveRecord::Base has_one :author has_many :pages accepts_nested_attributes_for :author, :pages end
Al permitir los atributos anidados se activan un número de cosas, incluyendo el guardado automático (y atómico) del registro junto con sus hijos asociados, y validaciones que tienen en cuenta a los hijos. Pero lo más mportante es el soporte para formularios anidades. Siempre que el modelo padre acepte atributos anidados para los objetos hijos, podemos crear formularios anidados utilizando form_for y field_for. Este formularios se pueden anidar arbitrariamente permitiendo editar jerarquías complejas de objetos en una única vista sin mucho código. Por ejemplo, dado este modelo:
class Customer < ActiveRecord::Base
has_many :orders
accepts_nested_attributes_for :orders,
:allow_destroy => true
end
Podemos escribir esta vista en Rails 2.3:
< % form_for @customer do |customer_form| %>< %= customer_form.label :name, 'Customer Name:' %> < %= customer_form.text_field :name %>
< % customer_form.fields_for :orders do |order_form| %>
<p> <div> < %= order_form.label :number, 'Order Number:' %> < %= order_form.text_field :number %> </div>
< % unless order_form.object.new_record? %> <div> < %= order_form.label :_delete, 'Remove:' %> < %= order_form.check_box :_delete %> </div> < % end %> </p>< % end %>
< %= customer_form.submit %> < % end %>
Hay más información en la excelente anotación de Ryan Daigle What’s New in Edge Rails: Nested Object Forms.
Trabajo en las Guías Rails
Las Guías Rails han dejado de utilizar marcado AsciiDoc para empezar a utilizar Textile. Esto tiene un par de ventajas: en primer lugar, hace más fácil contribuir a una guía. en segundo lugar, significa que se pueden quitar del repositorio las versiones compiladas en HTML porque se asume que cualquier desarrollador puede generarlas a partir de Textile. Además se ha remozado el aspecto del sitio web; comprúebenlo en el sitio beta.
Cambios en el andamiaje
Se ha ordenado un poco el código producido por script/generate scaffold nada especialmente importante pero se ponen el controlador y las vistas más en línea con las prácticas recomendadas en Rails. En la misma línea, la página index.html generada en las aplicaciones nueavs ahora incluye un enlace a las Guías.
