Sto provando a creare un collegamento semplice che quando viene premuto avvia il download di un documento associato a una particolare risorsa. Ho un modello di risorsa e in quel modello c'è una colonna chiamata "documento". Sono in grado di visualizzare correttamente il documento in linea quando si fa clic sul collegamento, ma preferirei scaricarlo. Ho letto di content-types e send_file, ma non sono riuscito a ricostruirlo completamente per funzionare.Download di file dal collegamento del documento Carrierwave allegato
Ecco il codice che ho che ho bisogno di utilizzare per il link:
<%= link_to 'Download File', :action => "download_file" %>
Questo genera un errore:
ActiveRecord :: RecordNotFound in ResourcesController # mostrare Impossibile trovare risorse con id = download_file
Quando cambio il link a questo, si apre il file nel browser:
<%= link_to 'Open file', resource.document_url, :target => "_blank" %>
Nel mio ResourcesController ho questo metodo definito:
def download_file
@resource = Resource.find(params[:id])
send_file(@resource.file.path,
:filename => @resource.file.name,
:type => @resource.file.content_type,
:disposition => 'attachment',
:url_based_filename => true)
end
Ho un percorso allestito in routes.rb come questo:
resources :resources do
get 'resources', :on => :collection
end
Quindi sulla base di questo errore, sembrerebbe che il mio metodo download_file in ResourcesController non è in grado di determinare l'ID del record di risorse a cui è associato il documento.
sto correndo: Rails 3.2.11 Carrierwave 0.8.0 di Ruby 1.9.3-P194
Gradirei qualche informazione in questo. Ho cercato un numero di articoli e non sono riuscito a trovare un semplice tutorial. Grazie.
Grazie mille. Tutto questo ha funzionato a meraviglia. Rails 4 - CarrierWave. –