Problema con carga de archivos simultanos

Hola saludos estoy probando con ruby on rails y estoy haciendo un álbum
de fotos en donde puedo crear un álbum en la tabla (álbums) y adjuntar
fotos en la tabla (fotos) al servidor pero el problema que tengo es que
solo logro crear un álbum y adjuntarle una foto y lo deseo es crear un
álbum y adjuntarle las foto que desee si me pueden ayudar seria de mucha
utilidad gracias

Víctor,

¿Tus álbumes ya tienen una relación has_many (1:n) creada, declarada y
funcionando?

Hola Adrià n, gracias por haber respondido… Si, tengo un modelo album
en donde tengo una relaciòn has_many :fotos y tengo el modelo foto
belongs_to :album, ya la relaciòn yo la probè por consola y funcionan
correctamente y tam bien tengo dentro de la tabla fotos el campo
album_id, ya tengo tam bien los metodos de creacion de cada uno de los
objetos dentro de un controlador llamado album pero tengo una vista
llamada new.rhtml en donde hay un formulario que envia al controlador
album los datos del album y la foto. Este formulario tiene la opciòn
multipart => true y dentro del formulario tengo un field_file. El
Problema que tengo esta en este archivo “new” ya que no se como enviar
varias fotos a un album.

Lo que tengo hasta ahorita es que me permite aceptar los datos del album
y una foto y enviarlos al controlador, probe con el metodo observe_field
al field_file pero en el controlador me da “ERROR” ya que no estoy
enviando la informacion con la opcion multipart que es para envios de
archivos.

De antemano muchas gracias por la ayuda que puedan brindarme

Víctor,

Sería bueno si podés pegar algo del código en Pastie así se puede
arreglar ahí mismo.

Para aclarar tu pregunta y ya que veo probaste bastante, ¿querés subir
varias fotos desde un mismo formulario, es eso lo que te tiene trabado?

Saludos


Adrián Mugnolo
Giro54

si ya lo pegue alli pero no se que mas hacer XD es primera vez que veo
ese portal creo que este es el link al codigo
http://pastie.org/pastes/280420

Puedes pasarnos tu codigo?
http://pastie.org/

2008/9/27 Victor B. [email protected]

En mi opinión lo tienes mal planteado

yo haría un album/new, ahí crearía el álbum

luego un album/:id/image/new, ahí crearía el formulario para
las imágenes que quieres, una por una o a la vez.

Con eso ya le puedes pasar el id del album y no usar “@album =
Album.find(:all).last” que en el caso de que haya varios usuarios
trabajando
a la vez te dará respuestas inesperadas y claro siempre vas a
subir imágenes al ultimo álbum.

Leete por ahí el tema de las rutas anidadas. Y yo metería el tema de la
creación de las imágenes en el images_controller.rb o algo así.

2008/9/27 Victor B. [email protected]

Ceritium gracias men ya puedo agregar varias fotos a un album aqui esta
el codigo, para que lo veas

en la vista new.rhtml tengo

<%= form_tag ({:action => ‘create’},:multipart => true )%>

Descripcion
<%= text_field 'victor', 'descripcion' %>

Fecha
<%= date_select 'victor', 'fecha' %>

<%= submit_tag "GuardarVictor" %> <%= link_to 'New_IMG', :action => 'newimg', :id => @victor %>

en la vista newimg.rhtml tengo

<%= form_tag ({:action => ‘createimg’},:multipart => true, :id =>
@victor)%>

<%= file_field 'victor', 'nomarchi'%>

<%= hidden_field 'victor', 'id' %> <%= submit_tag "Guardarimg" %> --------------------------------------------

en el controlador album_controller.rb

def new
@album = Album.new
end

def create
@var= params[:album]
@album = Album.new
@album.descripcion = @var[‘descripcion’]
@album.fecha = @var[‘fecha(1i)’] + ‘/’ + @var[‘fecha(2i)’] + ‘/’ +
@var[‘fecha(3i)’]
if @album.save
redirect_to :action => ‘newimg’, :id => @album.id
else
render :action => ‘new’
end
end

def newimg
@album = albun.find(params[:id])
@foto = Foto.new
end

def createimg
@var = params[:foto]
@foto = Foto.save(@var)
@foto = Foto.new
@foto.album_id = @var[‘id’]
@foto.nomarchi= @var[‘nomarchi’].original_filename
@foto.save
redirect_to :action => ‘newimg’, :id => @var[‘id’]
end


y los modelos album.rb y foto.rb tengo

album.rb

class Album < ActiveRecord::Base
has_many :fotos
end

foto.rb

class Foto < ActiveRecord::Base
belongs_to :album
def self.save(upload)
name = upload[‘nomarchi’].original_filename
directory = “public/images/fotos”
# create the file path
path = File.join(directory, name)
# write the file
File.open(path, “wb”) { |f| f.write(upload[‘nomarchi’].read) }
end
def self.delete(name)
filename= ‘public/images/fotos/’ + name
File.delete(filename)
end
end

he vuelto a leer el codigo y habria que pasale una mano. En unas horas
cuando me recupere te cuento :stuck_out_tongue:

A pesar de las horas que son, y sin haber leído mucho tu código, solo
por
el nombre de los metodos te puedo decir:
Intenta seguir el CRUD (busca en google), vamos que el createimg puede
ser
un “create” perfectamente si los agrupas con “new” => newimg en
images_controller.rb por ejemplo.

Si no sabes solo tienes que preguntar o buscar en google :wink:

On Sat, Sep 27, 2008 at 10:46 PM, Victor B. <