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
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' %>
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
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
On Sat, Sep 27, 2008 at 10:46 PM, Victor B. <