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.

entrega

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.

entrega

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.

entrega entrega entrega

blog comments powered by Disqus