enlace de descarga de archivos en Rails

Me gustaría dar a los visitantes la opción de descargar algunos pdf. Yo he tratado:

  'pdf' %> 

y algunas variaciones, pero no parecen funcionar. Sigo obteniendo No route matches [GET] "/data/abc.pdf"

Tengo los archivos pdf en una carpeta llamada datos, ubicada en la carpeta de activos. Cualquier ayuda sería apreciada.

Rails 4:

en rutas:

 get "home/download_pdf" 

en controlador (ya tiene pdf):

 def download_pdf send_file( "#{Rails.root}/public/your_https://stackoverflow.com/questions/13164063/file-download-link-in-rails/file.pdf", filename: "your_custom_file_name.pdf", type: "application/pdf" ) end 

en controlador (necesidad de generar pdf):

 require "prawn" class ClientsController < ApplicationController def download_pdf client = Client.find(params[:id]) send_data generate_pdf(client), filename: "#{client.name}.pdf", type: "application/pdf" end private def generate_pdf(client) Prawn::Document.new do text client.name, align: :center text "Address: #{client.address}" text "Email: #{client.email}" end.render end end 

en vista:

 <%= link_to 'Download PDF', home_download_pdf_url %> 

Carriles 3

La forma de hacerlo:

 def download send_data pdf, :filename => "abc.pdf", :type => "application/pdf" end 

Deberías ir a esta alternativa

Rieles <3

Archivo en carpeta pública

Esta puede ser la respuesta para usted: Cómo descargar un archivo desde la aplicación de Rails

Debes colocar tu archivo en una carpeta pública, ese es el truco.

Debería funcionar cuando el archivo se coloca correctamente.

Avíseme si no puede mover su archivo a la carpeta pública.

Descargar a través del controlador

Crea un controlador con una acción downlaod y link_to

  def download send_file '/assets/data/abc.pdf', :type=>"application/pdf", :x_sendfile=>true end 

Rails 4:

en rutas:

 get "home/download_pdf" 

en controlador (ya tiene pdf):

 def download_pdf send_file( "#{Rails.root}/public/your_https://stackoverflow.com/questions/13164063/file-download-link-in-rails/file.pdf", filename: "your_custom_file_name.pdf", type: "application/pdf" ) end 

en controlador (necesidad de generar pdf):

 require "prawn" class ClientsController < ApplicationController def download_pdf client = Client.find(params[:id]) send_data generate_pdf(client), filename: "#{client.name}.pdf", type: "application/pdf" end private def generate_pdf(client) Prawn::Document.new do text client.name, align: :center text "Address: #{client.address}" text "Email: #{client.email}" end.render end end 

en vista:

 <%= link_to 'Download PDF', home_download_pdf_url %> 

Si los archivos son estáticos (lo que significa que no cambian), colóquelos en la carpeta pública.

Entonces puedes descargar como

 PDF 

o con ERB

 <%= link_to 'PDF', 'https://stackoverflow.com/questions/13164063/file-download-link-in-rails/file.pdf', download: '' %> 

y para darle al archivo otro nombre para descargar, solo pase ese nombre a la opción de descarga

 <%= link_to 'PDF', 'https://stackoverflow.com/questions/13164063/file-download-link-in-rails/file.pdf', download: 'data' %> 

Esto descargará el archivo como data.pdf lugar de https://stackoverflow.com/questions/13164063/file-download-link-in-rails/file.pdf .

simplemente puede llamar a su acción de controlador de esta manera

 <%= link_to "Download", download_file_path, class: "btn btn-sm btn-default", target: "_blank" %> 

y en tu controlador

 def download_file redirect_to paperclip_attachment.file.url end 

Lucha mucho para encontrar una forma simple de descargar automáticamente algunos archivos del directorio público. Finalmente, se me ocurre esta solución. Por ejemplo: tengo mi archivo en la carpeta SVG dentro del directorio público.

 Public/svg/Test1.xlsx 

Ahora, cuando bash acceder, lo cargo y Give Path with Paper clip da problemas. Incluso cuando pruebo la ruta completa también da problemas, así que podemos hacer que sea una ruta dinámica. Primero obtenga la ruta del host para poder redirigir fácilmente. <% url = request.original_url.chomp (request.fullpath)%>

Ahora podemos acceder a cualquier archivo en la carpeta pública, como a continuación, y pasar la opción de descarga y descarga. Opción de descarga renombre cualquier archivo que desee descargar.

 <%= link_to 'Database File', "#{url}/svgs/Test1.xlsx", download: 'Data.xlsx',id: "Link_to_Downlaod" %> 

Ahora el enlace “Haga clic en” está listo. Podemos hacer clic en el enlace de arriba para descargar el archivo. Use la siguiente secuencia de comandos para descargar automáticamente el archivo.

    

Para el caso de PDF o cualquier otro tipo de archivo solo necesita cambiar la extensión del archivo.

    Intereting Posts