Sto utilizzando paperclip per l’upload di files.
Il path di default e’ sotto la directory public e il link_to all’url
del file funziona senza problemi, il pdf in questo caso viene aperto.
Se pero’ cambio il path e, ad esempio, faccio mettere i files sotto
/var/www/docs, mi dice:
Sto utilizzando paperclip per l’upload di files.
Il path di default e’ sotto la directory public e il link_to all’url
del file funziona senza problemi, il pdf in questo caso viene aperto.
Se pero’ cambio il path e, ad esempio, faccio mettere i files sotto
/var/www/docs, mi dice:
No route matches [GET] “/var/www/docs/file.pdf”
Devo aggiungere esplicitamente la route?
Ciao,
delle due l’una:
o vuoi servire un file raggiungibile dal webserver (apache o chi per
lui), e allora usi un’URL che abbia senso per il webserver,
o vuoi servire un file non raggiungibile dal webserver, per esempio
perch un file privato che non tutti debbono vedere, e allora usi
una URL che punta a un tuo controller che usa send_file per inviare il
file.
Personalizzando il path e mettendo has_attached_file :doc, {:path =>
‘/var/www/:attachment/:id/:style/:filename’} il file mi viene
memorizzato sotto la root del webserver ma volendo utilizzare un link
del tipo "http://localhost/#{document.doc.path} non saprei come
eliminare il /var/www iniziale.
Non so se paperclip ha un’opzione specifica in tal senso, ma penso che
ti tocchi sostituire esplicitamente il /var/www/ iniziale con http://localhost/ o simili: il fatto che a /var/www/ corrisponda http://localhost/ legato alla configurazione di apache, che potrebbe
essere completamente diversa.
Io scriverei un metodo, come helper o altro, a seconda di dove lo vuoi
utilizzare, che so, paperclip_path_to_url, in modo da isolare questa
informazione in un’unico posto, cos se poi decidi che la root
un’altra, devi cambiare solo una riga di codice e non migliaia.
Il problema e’ la personalizzazione del path nel senso che paperclip
per evitare che file con lo stesso nome vengano sovrascritti aggiunge
al path un :id.
Percio’, ad esempio, document.doc.path mi darebbe
dir/quellochee/1/file.pdf.
Personalizzando il path e mettendo has_attached_file :doc, {:path =>
‘/var/www/:attachment/:id/:style/:filename’} il file mi viene
memorizzato sotto la root del webserver ma volendo utilizzare un link
del tipo "http://localhost/#{document.doc.path} non saprei come
eliminare il /var/www iniziale.
http://localhost/ legato alla configurazione di apache, che potrebbe
essere completamente diversa.
Io scriverei un metodo, come helper o altro, a seconda di dove lo vuoi
utilizzare, che so, paperclip_path_to_url, in modo da isolare questa
informazione in un’unico posto, cos se poi decidi che la root
un’altra, devi cambiare solo una riga di codice e non migliaia.
Ho risolto in questo modo:
class Document < ActiveRecord::Base
belongs_to :company
has_attached_file :doc,
:url => ‘:attachment/:id/:style/:filename’,
:path => ‘/var/www/:attachment/:id/:style/:filename’
end
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.