rails link_to link ruby-on-rails ruby-on-rails-3 hyperlink download link-to

ruby on rails - link_to - enlace de descarga de archivos en rieles



rails link_to class (5)

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

<%= link_to "abc", "/data/abc.pdf"%> <%= link_to "abc", "/data/abc.pdf", :format => ''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.


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 intento 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.

<script type="text/javascript"> window.onload = document.getElementById(''Link_to_Downlaod'').click(); </script> </div>

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


Rails 4:

en rutas:

get "home/download_pdf"

en controlador (ya tiene pdf):

def download_pdf send_file( "#{Rails.root}/public/your_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

<a href="file.pdf" download>PDF</a>

o con ERB

<%= link_to ''PDF'', ''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'', ''file.pdf'', download: ''data'' %>

Esto descargará el archivo como data.pdf lugar de 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


Rails 4:

en rutas:

get "home/download_pdf"

en controlador (ya tiene pdf):

def download_pdf send_file( "#{Rails.root}/public/your_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 rieles

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