Ciao a tutti,
sto preparando un applicativo con rails per gestire le attività di un
ente di formazione.
###########################
PREMESSE
###########################
Ho necessità di poter allegare documenti ai vari stakeholders.
Esempio:
- vorrei poter allegare il cv del singolo allievo alla scheda del
singolo allievo,
- oppure la piantina dell'aula alla scheda descrittiva dell'aula
e via dicendo...
1 - Ho preparato il controller mettendoci il metodo upload:
def upload
t = Time.now
nome = t.to_i.to_s
uploaded_io = params[:file]
File.open(Rails.root.join('public', 'uploads', uploaded_io.nome), 'w')
do |file|
file.write(uploaded_io.read)
end
end
2- in ciascuna scheda dei vari stakeholders volevo mettere questo form:
<% form_tag({ :controller => :attachment, :action => :upload},
:multipart => true) do %>
<%= file_field_tag 'file', :id => "search-text" %> didascalia: <%=
text_field_tag :didascalia,nil, :id => "search-text" %>
<%= hidden_field_tag(:idext, @resource.id) %>
<%= hidden_field_tag(:categoria, Resource::CATEGORIA) %>
<%= submit_tag("ALLEGA", :id => "search-submit-attach") %>
<% end %>
3- tabella su db
+---------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| didascalia | varchar(255) | YES | | NULL | |
| nomeoriginale | varchar(255) | YES | | NULL | |
| nome | varchar(255) | YES | | NULL | |
| created_at | datetime | YES | | NULL | |
| updated_at | datetime | YES | | NULL | |
| idext | int(11) | YES | | NULL | |
| categoria | int(11) | YES | | NULL | |
+---------------+--------------+------+-----+---------+----------------+
MA QUANDO PROVO IL TUTTO:
Routing Error
No route matches "/attachment/upload" with {:method=>:post}
###########################
DOMANDE
###########################
1- E' giusta la mia configurazione di routes:
map.resources :attachments, :collection => { :upload => :any }??
2- con quel form però carico solo il file nel filesystem...ma a me serve
anche caricarne i riferimenti del db. Come faccio ?
Devo cambiare il form e fare un <% form_for(@attachment) do |f| %> ?
######################################################
RINGRAZIAMENTI DOVUTI
######################################################
A chi ha avuto la pazienza e la cortesia di seguirmi fino ad adesso: il
mio ringraziamento...
Come a chi avrà pietà di me e mi spiegherà dove sbaglio...
:-D
on 2010-08-04 11:42
on 2010-08-04 12:23
non vorrei smontarti il lavoro, ma potresti usare paperclip per gestire
tranquillamente gli uploads, magari puoi dare una sbirciata al suo
codice :P
altro suggerimento:
se devi allegare N files associati allo stesso stakeholder, potresti
usare le nested forms, con un po' di javascript (purtroppo *obtrusive*,
non ho ancora trovato altri modi) puoi replicare la form tutte le volte
che vuoi
venendo alle tue domande:
1- la rotta 'map.resources :attachments, :collection => { :upload =>
:any }' a occhio non mi sembra appropriata, hai provato a vedere cosa
esce fuori con 'rake routes' ?
2- se vuoi che la form sia collegata al modello, dovresti usare la
sinstassi '<% form_for(@attachment) do |f| %>'
ciao,
A.
Il 04/08/2010 11:42, An Car ha scritto:
on 2010-08-04 12:27
Ciao Andrea, mi sa che seguirò i tuoi consigli... non vedo perchè inventare di nuovo la ruota quando qualcun'altro l'ha già costruita.... Paperclip mi sembra abbastanza semplice da impiegare... Grazie ! Andrea Pavoni wrote: > non vorrei smontarti il lavoro, ma potresti usare paperclip per gestire > tranquillamente gli uploads, magari puoi dare una sbirciata al suo > codice :P > > altro suggerimento: > > se devi allegare N files associati allo stesso stakeholder, potresti > usare le nested forms, con un po' di javascript (purtroppo *obtrusive*, > non ho ancora trovato altri modi) puoi replicare la form tutte le volte > che vuoi > > venendo alle tue domande: > 1- la rotta 'map.resources :attachments, :collection => { :upload => > :any }' a occhio non mi sembra appropriata, hai provato a vedere cosa > esce fuori con 'rake routes' ? > > 2- se vuoi che la form sia collegata al modello, dovresti usare la > sinstassi '<% form_for(@attachment) do |f| %>' > > ciao, > A. > > > Il 04/08/2010 11:42, An Car ha scritto:
on 2010-08-04 12:33
2010/8/4 Andrea Pavoni <apeacox@gmail.com>: > non vorrei smontarti il lavoro, ma potresti usare paperclip per gestire > tranquillamente gli uploads, magari puoi dare una sbirciata al suo codice :P > > altro suggerimento: > > se devi allegare N files associati allo stesso stakeholder, potresti > usare le nested forms, con un po' di javascript (purtroppo *obtrusive*, > non ho ancora trovato altri modi) puoi replicare la form tutte le volte > che vuoi di un'occhiata a http://github.com/ryanb/nested_form credo ti aiuterà molto michele.
on 2010-08-04 12:43
grazie Michele, non lo conoscevo quel plugin ;) a dire il vero a forza di usare nested forms in quel modo, ho sviluppato anche io un po' di codice per semplificarmi la vita ma non ancora un plugin :P appena ho tempo lo provo, almeno per capire come genera il JS per il link 'aggiungi form'. nel mio approccio, il codice non è unobtrusive, potrebbe esserlo se usassi ajax, ma non trovo una reale giustificazione, visto che posso ottenere lo stesso risultato senza chiamate asincrone :P Il 04/08/2010 12:32, Michele Franzin ha scritto:
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.