0

ユーザーがサウンド ファイルをダウンロードできるようにしようとしています。ここに私のルートがあります:

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 を調べてきましたが、解決策が見つかりません。何かご意見は?

4

1 に答える 1