Ruby on Rails send_file doesn't work until i refresh the page?

后端 未结 4 1119
执念已碎
执念已碎 2020-12-11 10:39

I am working on a Rails server which I can download my locally stored movies and anime etc from. This is kind of working but when I click the download link I have to refresh

相关标签:
4条回答
  • 2020-12-11 11:04

    Move the file to public folder
    add only file name into link_to

    <%= link_to "Downloadable File", "/"+filename, %>
    
    0 讨论(0)
  • 2020-12-11 11:05

    Edited to reflect comment below. I would simple add a concern for handling downloads and then use

    include Concerns::Downloads
    

    to handle your download request. the routes.rb would look like this.

    resources :movies do
    member do
      post 'download'
    end
    

    and in the view

      <%= link_to 'Download', {:controller => 'movies', :action => 'download'}, {:method => :post } %></a>
    
    0 讨论(0)
  • 2020-12-11 11:10

    Are you using turbolinks? Turbolinks apparently doesn't play nicely with send_file (https://github.com/rails/turbolinks/issues/182). Try adding "data: { no-turbolink: true }" (or "'data-no-turbolink'=>true") in the link_to helper, e.g.:

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

    See also: Rails 4, asset pipeline causes user downloadable files to be downloaded twice, rails won't send_data as file, Ruby on Rails send_file, code in controller action running twice

    0 讨论(0)
  • 2020-12-11 11:27

    Try setting the disposition to attachment in send_file:

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

    The issue may be that your browser is trying to open the file itself - :disposition => 'attachment' prompts the browser to download the file, even if it thinks the file is something that it can open.

    0 讨论(0)
提交回复
热议问题