[Rails] Upload di un file

Ciao,
sono una new-entry di questa ML e come tanti ho cominciato ad
apprezzare Ruby con Rails, ma la prima cosa che ho fatto e’ stata con
RubyCocoa un po’ di tempo fa : un parser per i file .sis del Symbian
con la GUI in Cocoa. Con Rails sto provando a fare un’applicazione
completa.

Oggi mi sono rincoglionito con una cosa apparentemente semplice :
l’upload di un file con Rails.
Per semplificare le cose mi sono fatto un controller e una view :

—> upload.rhtml
<%= start_form_tag :action => “upload” , :multipart => true %>
File to Upload <%= file_field_tag
“upfile” %>

<%= submit_tag%>
<%= end_form_tag %>
—<
—> upload_controller.rb
class UploadController < ApplicationController
def upload
if request.post?
breakpoint
end
end
end
—<

Dopo il submit mi sarei aspettato che params[:upfile] contenesse
tutto quello che volevo, invece mi ritrovo un bel nil. Tutto quello
che vorrei e’ il mio bell’oggetto File da scrivere su disco.
Quello che mi sbaglio forse e’ non implementare nessun modello, ma
quello che mi colpisce e’ il fatto che dopo la submit il mio browser
non invii nessun file via POST.
Ho controllato con wireshark (ethereal) e effettivamente il file non
c’e’ nella richiesta!

Buon Weekend a tutti!

On 20/gen/07, at 19:32, Alberto Careccia wrote:

—> upload.rhtml
<%= start_form_tag :action => “upload” , :multipart => true %>

Ehm… mi rispondo da solo, avevo letto che fosse importante passare
come array il primo argomento nel caso di form multipart, ma ruby non
mi accettava quasto tipo di sintassi :

<%= start_form_tag {:action => “upload”} , :multipart => true %>

ma bastava passare gli argomenti con le parentesi :

<%= start_form_tag( {:action => “upload”} , :multipart => true) %>

A volte mi confonde un po’ il fatto di usare e non usare le parentesi
per gli argomenti, sopratutto quando dovresti rilassarti un po’
invece di programmare :stuck_out_tongue:

Ciao.