ここで本当に単純なものが欠けているような気がします...
アプリケーションの 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
ここで何が問題なのですか!?