[ruby-it] Upload file semplice

Luigi Maresca marluigi a libero.it
Lun 4 Maggio 2009 14:00:03 CEST


Provo ad aiutarti senza l'utilizzo di nessun plugin, che poi con il 
passare del tempo non funziona più. Le operazioni da fare sono 3: nel 
controller, nella vista e nel model.

Nel controller definisci:

def saveimage
@book=Book.find(params[:id])
  if @book.update_attributes(params[:book])
  if @book.save
  flash[:notice]='Immagine caricata.'
  redirect_to :back
  end
  else
  flash[:notice]='Errore: Immagine non caricata.'
  redirect_to :back
  end

In una vista che sceglierai tu, generalmente è quella da cui effettui le 
modifiche alla riga del db, scrivi:

<form 
action="<%=url_for(:controller=>'admin',:action=>'saveimage',:id=>@book)-%>" 
enctype="multipart/form-data" method="post">
<br />
<b><span style="color:red">Caricare Immagine:</span></b><br />
<input id="book_book" name="book[book]" size="30" type="file" />
<input name="commit" type="submit" value="Invia" />
</form>

Come vedi, nell'ultimo snippet, la vista fa riferimento alla tabella 
book e all'item book, sembrerebbe quindi che nella tabella book esista 
un item book di tipo "blob". Questo però non è vero perché l'item book è 
virtuale e serve esclusivamente per richiamare il Model del "book".
Questo vuol dire che nel model del book dovrai inserire:

class Book < ActiveRecord::Base
....
def book=(book_field)
self.cover=book_field.read
end

il codice scritto ti dice che nella tabella book l'item di tipo "blob" è 
cover!

Spero di esserti stato d'aiuto

Luigi
-- 
Posted via http://www.ruby-forum.com/.


More information about the Ml mailing list