我试图让我的用户能够下载声音文件。这是我的路线:
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并找不到解决方案。有什么想法吗?
答案 0 :(得分:0)
您的路线完全可以解决您的观看代码问题。如果您看到路由异常,它理想情况下它应该执行post请求尝试将button_to更改为此并尝试
<%= button_to "Download", download_path(sound.id), :method => :get %>