2012-01-06 18 views
5

Estoy usando Dragonfly para manejar imágenes en una aplicación Rails 3.1. Estoy luchando con la asignación de imágenes a un modelo a través de la url.Asignación de imagen desde la URL con Dragonfly

tengo esta funcionando bien en una forma:

<%= form_for [@word, @game, @picture], :html => {:multipart => true} do |f| %> 
    <%= f.hidden_field :retained_image %> 
    <p> 
    <%= f.label :image, "upload pic" %><br /> 
    <%= f.file_field :image %> 
    </p> 
    <p> 
    <%= f.label :image_url, "or pic URL" %><br /> 
    <%= f.text_field :image_url %> 
    </p> 
    <p> 
    <% if @picture.image_uid? %> 
    <label>Remove Picture?</label> 
    <%= f.check_box :remove_image %> 
    <% end %> 
    </p> 
    <p><%= f.submit %></p> 
<% end %> 

estados de documentación de la libélula:

libélula proporciona un descriptor de acceso para asignar directamente desde una URL:

@album.cover_image_url = 'http://some.url/file.jpg' 

Pero aún cuando intente en mi consola:

=> #<Picture id: nil, game_id: nil, user_id: nil, created_at: nil, updated_at: nil, image_uid: nil> 
ruby-1.9.2-p290 > picture.image_url = "http://i.imgur.com/QQiMz.jpg" 
=> "http://i.imgur.com/QQiMz.jpg" 
ruby-1.9.2-p290 > picture 
=> #<Picture id: nil, game_id: nil, user_id: nil, created_at: nil, updated_at: nil, image_uid: nil> 

Parece que está devolviendo la cadena de la URL que estoy tratando de dar a Dragonfly, no abriendo y tirando de la imagen como en el formulario.

¿Hay algo que me falta cuando trato de asignar una imagen basada en una url? Parece que debería ser bastante sencillo, pero parece que no puedo hacer nada para trabajar en la consola de rubíes.

Respuesta

8

¿Estás seguro de que no está funcionando? Lo que ocurre cuando se escribe (después de la asignación de una dirección URL)

picture.image 

o

picture.image.size 

por ejemplo?

No configurará un image_uid hasta que se guarde, pero tiene picture.image disponible para jugar.

La recuperación real de la URL se realiza de forma diferida, es decir, solo cuando es necesario. Llamar 'tamaño' arriba lo activa, por ejemplo.

+0

En primer lugar, gracias Marcar por la joya increíble. En segundo lugar, wow me siento tonto. Estaba buscando algo y algo así como: picture.save if picture.image_uid #obviamente esto no funcionará y no hice la prueba lo suficiente. Muchas gracias, funciona genial. – Kombo

2

Tuve un problema similar cuando, a través de un formulario, el: image_url no creaba: image_uid en el guardado. Todo funcionó bien en la consola de rieles.

Funcionó con: image_url una vez que lo agregué como un param en mi controlador. Pensé: la imagen manejaría: image_url en save, pero en su lugar tuve que pasar explícitamente: image_url como un param para guardar.

+0

Puede ser que deba agregar algún código para ilustrar su solución. –

+0

Seguramente es un viajero del tiempo y significa agregar: image_url a 'params.require (: my_model) .permit (: foo,: bar,: image_url)' en rieles 4. –

Cuestiones relacionadas