2

ここで本当に単純なものが欠けているような気がします...

アプリケーションの public フォルダーからダウンロードするファイルがいくつかあります。それを適切に処理するために、次のようなクラスを作成しました。

class UpdatesController < ApplicationController
  def download teste
    if params[:filename]
      file_path = "#{Rails.public_path}/download/#{params[:filename]}"
      send_file file_path, :filename => "#{params[:filename]}", :disposition => 'attachment'
    end
  end
end

これで、routes.rb は次のようになります。

match "updates/download/:filename" => "updates#download", :as => :getupdate

そして、次のようにファイルをリンクします。

<%= link_to "Download this thing", getupdate_url(:filename => entry.file_name) , :class => "btn btn-mini" %>

URL は正しく生成され、正しいアドレスにリダイレクトされます。

http://localhost:3000/updates/download/test.zip

そして、次のメッセージが表示されます。

No route matches [GET] "/updates/download/test.zip"

コンソールに入力rake routesすると、次のようになりました。

$ rake routes
getupdate        /updates/download/:filename(.:format) updates#download

ファイルは次のパスにあります。

.../myapp/public/download/test.zip

ここで何が問題なのですか!?

4

2 に答える 2