2012-01-06 20 views
5

Uso Dragonfly per la gestione di immagini su un'app Rails 3.1. Sto lottando con l'assegnazione di immagini a un modello tramite l'url.Assegnazione di immagini da URL con Dragonfly

ho questo bene a lavorare in 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 %> 

di Dragonfly documentazione afferma:

Libellula fornisce una funzione di accesso per assegnare direttamente da un URL:

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

Ma ancora quando ho prova nella mia console:

=> #<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> 

Sembra che stia restituendo la stringa dell'URL che sto cercando di dare a Dragonfly, non aprendo e tirando l'immagine come nel modulo.

C'è qualcosa che mi manca quando provo ad assegnare un'immagine basata su un URL? Sembra che dovrebbe essere abbastanza semplice, ma non riesco a ottenere nulla da lavorare nella console rubino.

risposta

8

sei sicuro che non funzioni? Cosa succede quando si digita (dopo l'assegnazione da un URL)

picture.image 

o

picture.image.size 

per esempio?

Non imposterà un image_uid fino a quando non viene salvato, ma è disponibile picture.image con cui giocare.

L'effettivo prelievo dall'url avviene pigramente, cioè solo quando necessario. Chiamando 'dimensione' qui sopra, ad esempio, lo si innesca.

+0

Prima di tutto, grazie Mark per l'incredibile gemma. Secondo, wow mi sento sciocca. Stavo facendo un po 'di raccolta e qualcosa del genere: picture.save se picture.image_uid #obviously questo non funziona e non ho provato abbastanza a fondo. Grazie mille, funziona alla grande. – Kombo

2

Ho avuto un problema simile in cui, tramite un modulo, il: image_url non stava creando un: image_uid al salvataggio. Tutto ha funzionato bene nella console di rotaie.

Ha funzionato con: image_url dopo averlo aggiunto come parametro nel mio controller. Ho pensato: l'immagine avrebbe gestito: image_url al salvataggio, ma invece ho dovuto passare esplicitamente: image_url come parametro per il salvataggio.

+0

Potrebbe essere necessario aggiungere del codice per illustrare la soluzione. –

+0

Sicuramente è un viaggiatore nel tempo e significa aggiungere: image_url a 'params.require (: my_model) .permit (: foo,: bar,: image_url)' nei binari 4. –

Problemi correlati