usar tutorial rails español empezar ejemplos descargar curso con como caracteristicas ruby-on-rails ruby ruby-on-rails-4 delay sendfile

ruby-on-rails - tutorial - ruby on rails pdf



Ruby on Rails send_file no funciona hasta que actualice la página? (4)

Estoy trabajando en un servidor Rails desde el cual puedo descargar mis películas y anime almacenados localmente. Esto funciona, pero cuando hago clic en el enlace de descarga, debo actualizar la página para que la descarga realmente comience.

Este es el controlador que maneja la descarga:

class DownloadController < ApplicationController def index @title = params[:title] @name = params[:name] @path = ''/media/sf_Anime,_VN,_LN/Watching, not watched yet/''+@title+''/''+@name send_file( @path ) end end

y este es el enlace que enlaza con ese controlador:

<% @episodes.each do |x| %> <p> <%= x %><%= link_to " Download", {controller: ''download'', action: ''index'', title: @title, name: x } %> </p> <% end %>

editar: Hice algunas pruebas hoy y noté que los enlaces de descarga funcionan instantáneamente si intento enviar un archivo más pequeño (texto o imagen). También noté que los enlaces de descarga también funcionan para las películas, pero la descarga tarda de 20 a 30 segundos en comenzar. ¿Tienes alguna idea de lo que podría causar esta demora?


Intente configurar la disposición al archivo adjunto en send_file :

class DownloadController < ApplicationController def index ... send_file( @path, :disposition => ''attachment'' ) end end

El problema puede ser que su navegador está tratando de abrir el archivo en sí mismo :disposition => ''attachment'' pide al navegador que descargue el archivo, incluso si cree que el archivo es algo que puede abrir.


Editado para reflejar el comentario a continuación. Simplemente agregaría una preocupación para manejar descargas y luego usar

include Concerns::Downloads

para manejar su solicitud de descarga. el routes.rb se vería así.

resources :movies do member do post ''download'' end

y en la vista

<%= link_to ''Download'', {:controller => ''movies'', :action => ''download''}, {:method => :post } %></a>


Mueva el archivo a la carpeta pública
agregar solo el nombre del archivo en link_to

<%= link_to "Downloadable File", "/"+filename, %>


¿Estás usando turbolinks? Turbolinks aparentemente no funciona bien con send_file ( https://github.com/rails/turbolinks/issues/182 ). Intente agregar "data: {no-turbolink: true}" (o "''data-no-turbolink'' => true") en el link_to helper, por ejemplo:

<%= link_to "Downloadable File", downloadable_file, data: { no-turbolink: true } %>

Ver también: Rails 4, la canalización de activos hace que los archivos descargables del usuario se descarguen dos veces , los rails no send_data como el archivo , Ruby on Rails send_file, el código en la acción del controlador se ejecute dos veces