Forum: Rails-ES Update

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Romina C. (Guest)
on 2009-01-30 20:45
Hola de nuevo.
Tengo una tabla repos que contiene archivos, su nombre, el tipo.
en modelo tengo lo siguiente:

        def file_info=(input_data)
   if input_data.blank?
    errors.add('Debe seleccionar una imagen' ) if input_data.blank?
    else
            self.nombre = input_data.original_filename
      self.content_type = input_data.content_type.chomp
      self.archivo = input_data.read
   end
  end

...yo selecciono el desde un file_field en la vista y al crearlo extrae
el nombre y el tipo de datos llenandolos en la tabla.

Bueno en el create no tengo ningun problema, pero a la hora de
actualizar, simplemente no funciona.Es decir, no obtiene el nombre del
archivo ni el tipo de datos, lo cual provoca que corrompa el archivo que
ya está almacenado.


Tengo esto en el controller (lo generé con scaffold):

  def update
    @repo = Repo.find(params[:id])
    respond_to do |format|
      if @repo.update_attributes(params[:repo])
        flash[:notice] = 'El archivo fue editado exito.'
        format.html { redirect_to(@repo) }
        format.xml  { head :ok }
      else
       format.html { render :action => "edit" }
       format.xml  { render :xml => @repo.errors, :status =>
:unprocessable_entity }
      end
    end
  end

...he probado todo lo que se me ha ocurrido pero no me sale.
He leído un monton pero no logro comprender bien todo esto.


Gracias de antemano.

Saludos!!
Andrés G. (Guest)
on 2009-01-30 21:00
(Received via mailing list)
¿Cómo tienes la vista edit.htm.erb de ese controlador?

El 30 de enero de 2009 19:45, Romina C. <
removed_email_address@domain.invalid> escribió:
Guillermo Álvarez Fernández (Guest)
on 2009-01-30 21:02
(Received via mailing list)
Mira en la consola cuales son los params que te llegan a la aplicación.
¿tienes puesto multipart en el formulario de update?


Un Saludo.


---
Guillermo Álvarez Fernández
removed_email_address@domain.invalid
http://cientifico.net
Romina C. (Guest)
on 2009-01-30 21:03
Andrés Gutiérrez wrote:
> ¿Cómo tienes la vista edit.htm.erb de ese controlador?


<h1>Editar archivo</h1>

<% form_for(@repo) do |f| %>
  <%= f.error_messages %>
  <p>
    <%= f.label :Archivo %><br />
    <%= f.file_field :archivo %>
  </p>
  <p>
    <%= f.submit "Guardar" %>
  </p>
<% end %>

<%= link_to 'Ver', @repo %> |
<%= link_to 'Volver', repos_path %>


ahi es donde cambio el archivo

gracias por responder
saludos
Romina C. (Guest)
on 2009-01-30 21:09
Guillermo Álvarez Fernández wrote:
> Mira en la consola cuales son los params que te llegan a la aplicación.
> ¿tienes puesto multipart en el formulario de update?
>


ya probé con y sin multipart
Saludos
Andrés G. (Guest)
on 2009-01-30 21:09
(Received via mailing list)
>>¿tienes puesto multipart en el formulario de update?
Me parece que tienes que poner lo que dice Guillermo

El 30 de enero de 2009 20:03, Romina C. <
removed_email_address@domain.invalid> escribió:
Andrés G. (Guest)
on 2009-01-30 21:20
(Received via mailing list)
>>ya probé con y sin multipart
¿¿Así???

<% form_for  :repo, :url => {:action => 'update'}, :html =>{:multipart
=> true}) do |f| %>

¿Ahora usas algún plugin (paperclip, attachment_fu,...)?



El 30 de enero de 2009 20:09, Romina C. <
removed_email_address@domain.invalid> escribió:
Romina C. (Guest)
on 2009-01-30 21:24
Andrés Gutiérrez wrote:
>>>ya probé con y sin multipart
> ¿¿Así???
>
> <% form_for  :repo, :url => {:action => 'update'}, :html =>{:multipart
> => true}) do |f| %>
>
> ¿Ahora usas algún plugin (paperclip, attachment_fu,...)?
>
lo tengo asi

<% form_for(@repo , :url => {:action=>'update'}, :html=>
{:multipart=>true}) do |f| %>

y nop,no estoy usando ningun plugin

saludos
Francesc E. (Guest)
on 2009-01-30 22:17
(Received via mailing list)
Mirate Paperclip, en la documentación está todo lo que necesitas para
adjuntar archivos a tus modelos de datos.

On 30/01/2009, at 20:24, Romina C.
<removed_email_address@domain.invalid
Andrés G. (Guest)
on 2009-01-30 23:24
(Received via mailing list)
Haz caso a Francesc, de verdad este mismo hilo, con los mismos
protagonistas
y Francesc recomnedandote lo mismo lo tuvimos ayer. En serio creo que el
esfuerzo de hacerte con el plugin, luego se vera recomendado con creces.
Yo
no lo he usado, pero en cuanto necesite el tema de adjuntar archivos,
será
mi elección

Un saludo

2009/1/30 Francesc E. <removed_email_address@domain.invalid>
Romina C. (Guest)
on 2009-02-02 14:38
Andrés Gutiérrez wrote:
> Haz caso a Francesc, de verdad este mismo hilo, con los mismos
> protagonistas
> y Francesc recomnedandote lo mismo lo tuvimos ayer. En serio creo que el
> esfuerzo de hacerte con el plugin, luego se vera recomendado con creces.
> Yo
> no lo he usado, pero en cuanto necesite el tema de adjuntar archivos,
> será
> mi elección
>
> Un saludo

por favor corrijanme si estoy equivocada, he estado leyendo bastante la
documentacion del plugin que me recomendaron, y por lo que leí no me
sirve, ya que en la BD va almacenando la ruta y no el archivo en sí.

Si este fuera el caso no me sirve para nada, por motivos de la empresa
se me exige que queden almacenados en la BD y no que guarde solo una
ruta.

Si no es asi lo usaré encantada, no es que me guste complicarme la
existencia ni nada.

Gracias por su ayuda y recomendaciones.

Saludos
Andrés G. (Guest)
on 2009-02-02 15:30
(Received via mailing list)
>>por favor corrijanme si estoy equivocada, he estado leyendo bastante la
>>documentacion del plugin que me recomendaron, y por lo que leí no me
>>sirve, ya que en la BD va almacenando la ruta y no el archivo en sí.

Alguien que conozca Paperclip ¿Francesc ...?

El 2 de febrero de 2009 13:38, Romina C. <
removed_email_address@domain.invalid> escribió:
Francesc E. (Guest)
on 2009-02-02 16:27
(Received via mailing list)
2009/2/2 Andrés gutiérrez <removed_email_address@domain.invalid>:

> Alguien que conozca Paperclip ¿Francesc ...?

El dia 29 de Enero dije:

> Con Paperclip puedes guardar los archivos en la base de datos. Y es
> bastante facil usarlo.

Me precipité al decirlo, ya que ahora mirando el código de la rama
oficial veo que no se puede.

    module Storage
      module Paperclip
        module Filesystem
        ...
        end
        module S3
        ...
        end
      end
    end

El tema es que no se donde miré pero diria que habia un módulo DB.

Siento mucho la confusión.

Igualmente seria interesante que utilizaras Paperclip y que hicieras
el módulo de storage en la base de datos, que siempre puede ser útil
para otras personas y de paso colaboras en el proyecto. ;)
Romina C. (Guest)
on 2009-02-02 16:43
> Me precipité al decirlo, ya que ahora mirando el código de la rama
> oficial veo que no se puede.


...bueno, muchisimas gracias por la aclaracion, ya estaba pensando que
leía otra cosa o no sé qué.

> Igualmente seria interesante que utilizaras Paperclip y que hicieras
> el módulo de storage en la base de datos, que siempre puede ser útil
> para otras personas y de paso colaboras en el proyecto. ;)

de hecho, tengo la intención de usarlo pero para otra aplicación que
tengo en mente, pero será cuando tenga más tiempo, lamentablemente ahora
no lo tengo porque necesito avanzar con lo que tengo ahora.

Volviendo a mi problema inicial (sé que es una molestia, lo siento!!!),
pero me di cuenta que de hecho al hacer el update sí realiza el metodo
que está en el modelo donde se obtiene el nombre y el tipo de archivo.

El problema es que estos datos actualizados no son enviados de vuelta al
metodo update.

Saludos!
cartuchoGL (Guest)
on 2009-02-02 16:59
(Received via mailing list)
Francesc E. escribió:
>> bastante facil usarlo.
>         module S3
>         ...
>         end
>       end
>     end
>
> El tema es que no se donde miré pero diria que habia un módulo DB.
>

Attachment_fu [1] si tiene para db, aunque preferiria cortarme la mano
antes de hacerlo (bueno, por dinero, hasta programo en php ;)

[1] http://github.com/technoweenie/attachment_fu/tree/master
javier ramirez (Guest)
on 2009-02-02 17:16
(Received via mailing list)
>> Con Paperclip puedes guardar los archivos en la base de datos. Y es
>> bastante facil usarlo.
>>
aquí tienes información y algunos links (alguno desactualizado) para
subir ficheros en rails

http://wiki.rubyonrails.org/rails/pages/HowtoUploadFiles

Y aquí uno de los plugins de referencia para subida de ficheros que sí
soporta almacenar en la DB, aunque nunca lo he usado para eso, sino
usando el filesystem

http://github.com/technoweenie/attachment_fu/tree/master

Si el plugin no te da lo que quieres, con el código de la primera página
puedes ver que recibir un fichero desde un formulario es fácil. Y una
vez lo tienes, almacenarlo en la DB es exactamente igual a guardar el
nombre de un usuario, por ejemplo. Si asignas el valor a un campo y le
das a guardar, lo guardas.

Como cualquier otro campo, sólo que con un problema serio de rendimiento
si lo lees cada vez (por eso en attachment fu usan dos tablas, una sólo
con el contenido, para usarla solamente cuando realmente quieres leer el
contenido binario).

suerte,

--
javier ramírez

..i do ruby on rails development in madrid, spain, at
http://www.aspgems.com
..you can find out more about me on http://formatinternet.wordpress.com
and http://workingwithrails.com/person/5987-javier-ramirez
Romina C. (Guest)
on 2009-02-03 20:23
gracias a todos por la ayuda
hasta que me salió
XD
This topic is locked and can not be replied to.