ユーザーがサウンド ファイルをダウンロードできるようにしようとしています。ここに私のルートがあります:
root 'welcome#index'
get 'sound/:id' => 'sound#download', :as => :download
resources :users, :sounds, :authentications
delete "authentications/:id" => "authentications#destroy"
サウンド モデルは次のとおりです。
class Sound < ActiveRecord::Base
belongs_to :user
# for paperclip
has_attached_file :sound_file
# do not create a sound unless a sound file
# is present
validates_attachment_presence :sound_file
end
サウンド コントローラーにダウンロード関数を作成しました。
def download
@sound= Sound.find(params[:id])
send_file @sound.sound_file.path,
:filename => @sound.sound_file_file_name,
:type => @sound.sound_file_content_type,
:disposition => 'attachment'
end
ユーザーがダウンロード ボタンを押すと、サウンド ファイルがダウンロードされます。
<% @sounds.each do |sound| %>
...some code...
<%= button_to "Download", download_path(sound.id), method: :get %>
<br>
残念ながら、ユーザーがボタンを押すと、代わりに次のエラーが表示されます。
[POST] "/sound/4" に一致するルートはありません
エラーがルートにあることは確かですが、修正方法がわかりません。Paperclip のドキュメントでは、ダウンロードについてあまり扱っていません。私は Stack Overflow を調べてきましたが、解決策が見つかりません。何かご意見は?