2

ローカルに保存されている映画やアニメなどをダウンロードできるRailsサーバーで作業しています。これは機能していますが、ダウンロード リンクをクリックすると、ダウンロードを実際に開始するためにページを更新する必要があります。

これは、ダウンロードを処理するコントローラーです。

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

これは、そのコントローラーにリンクするリンクです。

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

編集: 今日テストを行ったところ、小さなファイル (テキストまたは画像) を送信しようとすると、ダウンロード リンクがすぐに機能することがわかりました。また、映画のダウンロード リンクも実際に機能することに気付きましたが、ダウンロードが開始されるまでに 20 ~ 30 秒かかります。この遅延の原因は何だと思いますか?

4

4 に答える 4

4

ターボリンクを使用していますか?Turbolinks は明らかに send_file ( https://github.com/rails/turbolinks/issues/182 ) ではうまく動作しません。link_to ヘルパーに "data: { no-turbolink: true }" (または "'data-no-turbolink'=>true") を追加してみてください。

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

関連項目: Rails 4、アセット パイプラインにより、ユーザーがダウンロード可能なファイルが 2 回ダウンロードされるrails は send_data をファイルとして送信しないRuby on Rails send_file、コントローラー アクションのコードが 2 回実行される

于 2014-09-13T18:17:32.563 に答える