Problema attachment_fu


#1

Hola, tengo un problema con este plugin. Lo tenemos instalado para que
permita subir imagenes y genere 3 imagenes con distinto tamaño para
utilizarlas en un sitio u otro de la aplicacion segun interese.

Os comento como lo tenemos organizado:

En el modelo de la imagen:

class Image < ActiveRecord::Base
.
.
.

has_attachment :content_type => [‘image/jpeg’, ‘image/pjpeg’,
‘image/gif’, ‘image/jpg’, ‘image/png’],
:storage => :file_system,
:path_prefix => ‘public/images’,
:size => 1.kilobyte…300.kilobytes,
:resize_to => ‘700>’,
:thumbnails => { :titular1 => ‘220>’,
:titular2 => ‘150>’, :foro => ‘440>’ },
:processor => :MiniMagick

validates_as_attachment


El controlador en cuestion se llama titulares. El codigo es asi:

class TitularesController < ApplicationController
.
.
.
def edit
@titulo = “Editar titular”
@titular = Contenido.find(params[:id])
end
.
.
.
def create
@titular=Contenido.new(params[:contenido])
@titular.subtipo_id=Subtipo::TITULARES

# Actualizo el usuario, incrementando sus puntos y su nº de posts de

blog
autor = Usuario.find(@titular.usuario_id)
estadisticas_up(autor.id, Subtipo::TITULARES)
autor.update_attribute(“puntos”, autor.puntos + @titular.puntos_msg)
autor.update_attribute(“puntos_anual”, autor.puntos_anual +
@titular.puntos_msg)

/AQUI VIENE LO INTERESANTE PARA LAS IMAGENES/

respond_to do |format|
  if @titular.save
    #guardo las imagenes
    unless (image = params[:image]).nil?
      img = Image.new(image.merge({:usuario_id =>

session[:usuario_id], :contenido_id => @titular.id, :orden =>1}))
img.save
end
format.html { redirect_to(portada_titulares_path) }
format.xml { render :xml => @titular, :status => :created,
:location => @titular }
else
format.html { render :action => “new” }
format.xml { render :xml => @titular.errors, :status =>
:unprocessable_entity }
end
end
end
.
.
.

Pues bien, a la hora de editar un titular no hay ningun tipo de
problema, es decir puedo añadir o cambiar una foto y en la base de datos
automaticamente se guardan las tres copias de la imagen (cada una con
distinto tamaño y con el nombre retocado para poderlas utilizar en un
sitio u otro de la aplicacion). Pero el problema viene a la hora de
crear un titular, si cuando creo el titular añado una imagen únicamente
me guarda en la base de datos la imagen con el tamaño original, no crea
las copias. Llevamos un buen rato intentando ver el fallo pero no damos
con él, mas que nada por que en el método de edit no hay prácticamente
nada escrito, vamos que lo hace automáticamente, no vemos porqué en el
create no es asi.

Un saludo y gracias por la ayuda.


#2

2009/3/5 Jose vicente Ribera pellicer
removed_email_address@domain.invalid:

    end
Estás haciendo un img.save sin recuperar el valor, que puede ser falso
y por lo tanto que no se guarde tu imagen debido a algún fallo
(validación, etc…). Utiliza save! o comprueba que save no sea falso
y en su caso comprueba que errores aparecen en el modelo.

Suerte.


#3

Daniel R. Troitiño wrote:

2009/3/5 Jose vicente Ribera pellicer
removed_email_address@domain.invalid:

    end
Estás haciendo un img.save sin recuperar el valor, que puede ser falso
y por lo tanto que no se guarde tu imagen debido a algún fallo
(validación, etc…). Utiliza save! o comprueba que save no sea falso
y en su caso comprueba que errores aparecen en el modelo.

Suerte.

Gracias, me pongo a ello ahora mismo.


#4

Es muy raro, sigue igual. Es decir guarda la imagen pero no genera las
de distinto tamaño.

Con img.save! tampoco genera ningun tipo de error.


#5

Daniel,

Por mi experiencia, y después de intentarlo hacer de 1000 formas
distintas, he llegado a lo que para mí es la “solución perfecta”, y
pasa por crear las imágenes dentro del modelo en lugar del
controlador. En el formulario, el input seria:

<input type=‘file’ name=‘contenido[uploaded_data]’ …/>

y en el modelo Contenido:

class Contenido < ActiveRecord::Base
attr_accessor :new_image

after_save :save_new_image

def uploaded_data=(data)
unless data.blank?
new_image = data
end
end

def save_new_image
unless self.new_image.blank?
images.create!({:uploaded_data => new_image}.merge(:created_by =>
self.created_by …))
end
end

Esto es sin haber visto tus modelos ni sus relaciones, pero para que
te hagas una idea.

de esta forma, en el controlador solo tienes el
Contenido.new(params[:contenido]) o
@contenido.update_attributes(params[:contenido])

Espero que te sirva mi consejo!

Saludos,

Isaac Feliu


#6

Hola,

Si la imagen original se guarda bien, pero no se generan los
thumbnails, tiene pinta que el encargado de generarlas, en este caso
MiniMagick, no esta haciendo bien su trabajo, y attachment_fu ni se
entera…

Comprueba que Minimagick esta funcionando bien, o prueba a usar otro
procesador, como rmagick, para descartar problemas por lo menos…

Suerte !!
El 05/03/2009, a las 17:02, Jose vicente Ribera pellicer
escribió:

Es muy raro, sigue igual. Es decir guarda la imagen pero no genera las


#7

Hola Jose Vicente,

Como también ha dicho Alfredo, me suena que me pasó eso con TinyMCE Plus
que
también contenía attachment_fu, y el problema se solucionó instalando
MiniMagick.

On Thu, Mar 5, 2009 at 5:12 PM, Alfredo removed_email_address@domain.invalid wrote:

Suerte !!

removed_email_address@domain.invalid
http://lists.simplelogica.net/mailman/listinfo/ror-es


Ror-es mailing list
removed_email_address@domain.invalid
http://lists.simplelogica.net/mailman/listinfo/ror-es


BEECODER
Laura Valverde García
removed_email_address@domain.invalid
m 644 420 820

www.beecoder.com


#8

Alfredo Solano wrote:

Hola,

Si la imagen original se guarda bien, pero no se generan los
thumbnails, tiene pinta que el encargado de generarlas, en este caso
MiniMagick, no esta haciendo bien su trabajo, y attachment_fu ni se
entera…

Comprueba que Minimagick esta funcionando bien, o prueba a usar otro
procesador, como rmagick, para descartar problemas por lo menos…

Suerte !!
El 05/03/2009, a las 17:02, Jose vicente Ribera pellicer
escribi�:
Es muy raro, sigue igual. Es decir guarda la imagen pero no genera las

Tienes mas razon que un santo, termino de probarlo en el servidor y
funciona a la perfeccion. en localhost no tenia el MiniMagick.

Mil gracias por la ayuda.


#9

Ror-es mailing list
removed_email_address@domain.invalid
http://lists.simplelogica.net/mailman/listinfo/ror-es