无法使用回形针下载声音文件(路由错误)

时间:2013-11-11 06:03:57

标签: ruby-on-rails paperclip

我试图让我的用户能够下载声音文件。这是我的路线:

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

我在Sound控制器中创建了一个下载功能:

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并找不到解决方案。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您的路线完全可以解决您的观看代码问题。如果您看到路由异常,它理想情况下它应该执行post请求尝试将button_to更改为此并尝试

<%= button_to "Download", download_path(sound.id), :method => :get %>