# Allegare un file agli stakeholders del sistema

**URL:** <https://www.ruby-forum.com/t/allegare-un-file-agli-stakeholders-del-sistema/192710>\
**Category:** IT\
**Created:** [August 4, 2010, 11:42am UTC](https://www.ruby-forum.com/t/allegare-un-file-agli-stakeholders-del-sistema/192710 "2010-08-04T11:42:18Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![punkaruby](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/49beb7/32.png) [@punkaruby](https://www.ruby-forum.com/u/punkaruby)\
**Post date:** [August 4, 2010, 11:42am UTC](https://www.ruby-forum.com/t/allegare-un-file-agli-stakeholders-del-sistema/192710/1 "2010-08-04T11:42:18Z")

</div>

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
```

---

<div class="post-metadata">

**Author:** ![punkaruby](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/49beb7/32.png) [@punkaruby](https://www.ruby-forum.com/u/punkaruby)\
**Post date:** [August 4, 2010, 12:23pm UTC](https://www.ruby-forum.com/t/allegare-un-file-agli-stakeholders-del-sistema/192710/2 "2010-08-04T12:23:18Z")

</div>

non vorrei smontarti il lavoro, ma potresti usare paperclip per gestire  
tranquillamente gli uploads, magari puoi dare una sbirciata al suo  
codice 😛

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:

---

<div class="post-metadata">

**Author:** ![punkaruby](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/49beb7/32.png) [@punkaruby](https://www.ruby-forum.com/u/punkaruby)\
**Post date:** [August 4, 2010, 12:27pm UTC](https://www.ruby-forum.com/t/allegare-un-file-agli-stakeholders-del-sistema/192710/3 "2010-08-04T12:27:21Z")

</div>

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 P. wrote:

> non vorrei smontarti il lavoro, ma potresti usare paperclip per gestire  
> tranquillamente gli uploads, magari puoi dare una sbirciata al suo  
> codice 😛
> 
> 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:

---

<div class="post-metadata">

**Author:** ![punkaruby](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/49beb7/32.png) [@punkaruby](https://www.ruby-forum.com/u/punkaruby)\
**Post date:** [August 4, 2010, 12:33pm UTC](https://www.ruby-forum.com/t/allegare-un-file-agli-stakeholders-del-sistema/192710/4 "2010-08-04T12:33:16Z")

</div>

2010/8/4 Andrea P. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> non vorrei smontarti il lavoro, ma potresti usare paperclip per gestire  
> tranquillamente gli uploads, magari puoi dare una sbirciata al suo codice 😛
> 
> 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 [GitHub - ryanb/nested\_form: Rails plugin to conveniently handle multiple models in a single form. · GitHub](http://github.com/ryanb/nested_form)  
credo ti aiuterà molto

michele.

---

<div class="post-metadata">

**Author:** ![punkaruby](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/49beb7/32.png) [@punkaruby](https://www.ruby-forum.com/u/punkaruby)\
**Post date:** [August 4, 2010, 12:43pm UTC](https://www.ruby-forum.com/t/allegare-un-file-agli-stakeholders-del-sistema/192710/5 "2010-08-04T12:43:48Z")

</div>

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 😛

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 😛

Il 04/08/2010 12:32, Michele F. ha scritto:
