¿Cómo puedo crear múltiples objetos en un solo formulario en Rails 3.1?

Tengo un modelo de foto y quiero configurar un formulario para que un usuario pueda crear varias fotos desde el mismo formulario. He visto los Railscasts # 196 y 197 en formularios de modelos nesteds, pero eso es más complejo de lo que necesito y trata más los formularios que contienen varios modelos, no múltiples objetos del mismo modelo. A continuación se encuentra mi código para un formulario simple que le permite a un usuario adjuntar una imagen y crear un nuevo objeto Photo. He experimentado con fields_for y he intentado anidar pero parece demasiado complicado y no puedo hacer que funcione. ¿Alguna idea sobre cómo podría configurar este formulario para permitir al usuario adjuntar 5 imágenes para crear 5 nuevos objetos Photo?

 { :class => "form-stacked", :multipart => "true" } ) do |f| %> 
"btn primary" %>

Terminé usando plupload para las cargas de múltiples archivos (fotos) con carrierwave. Usé la gem plupload-rails y el siguiente código y todo funciona bien:

 <%= javascript_tag do %> $(function(){ var uploader = $('#uploader').pluploadQueue({ runtimes : "html5, gears,flash,silverlight,browserplus", max_image_size : '100mb', url : "/photos", unique_names : true, multipart: true, preinit: attachCallbacks, multipart_params: { "authenticity_token" : '<%= form_authenticity_token %>' }, flash_swf_url : '/plupload/js/plupload.flash.swf', silverlight_xap_url : '/plupload/js/plupload.silverlight.xap' }); //end initial script //redirect after complete function attachCallbacks(uploader) { uploader.bind('FileUploaded', function(Up, File, Response) { if((uploader.total.uploaded + 1) == uploader.files.length){ var filesAdded = uploader.files.length; window.location = "<%=j edit_individual_photos_path %>"+ '?files=' + filesAdded; } }); } }); //end function <% end %> 

Espero que esto ayude a alguien a ponerse en marcha.

Me gusta la joya de Ryan Bates Nested_Form, porque soy perezosa. Pero yo haria esto

 <%= semantic_nested_form_for @user, :html => {:multipart => true} do |f| %> <%= f.fields_for :photo %> 

<%= f.link_to_add "Add Photo", :photo %>

<%= f.submit :class => "btn-success" %>
<% end %>

Entonces un _photo.erb parcial

 
<%= f.file_field :image %>

En lo que respecta a su comentario:

Creo que esto es lo que estás buscando, lo hice por ti aquí (basado en el episodio de Railscast carrierwave):

https://github.com/rbirnie/image-upload

Fuente básica:

Modelo de galería

 class Gallery < ActiveRecord::Base attr_accessible :name, :paintings_attributes has_many :paintings accepts_nested_attributes_for :paintings end 

Pinturas modelo:

 class Painting < ActiveRecord::Base attr_accessible :gallery_id, :name, :image, :remote_image_url belongs_to :gallery mount_uploader :image, ImageUploader end 

Galerias editar

 <%= nested_form_for @gallery, :html => {:multipart => true} do |f| %> <%= f.error_messages %> 

<%= f.label :name %>
<%= f.text_field :name %>

<%= f.fields_for :paintings do |photo_form| %> <%= photo_form.label :name %> <%= photo_form.text_field :name %> <%= photo_form.file_field :image %> <%= photo_form.link_to_remove "Remove this photo" %> <% end %>

<%= f.link_to_add "Add a photo", :paintings %>

<%= f.submit %>

<% end %>

~