2

我使用回形针创建了文件上传!文件按预期上传。比我添加的文件下载方法是这样的:

def download
    sample = Sample.find(params[:id])


    send_file  upload.sample.path,
    :filename => upload.sample_file_name,
                :type => upload.sample_content_type,
    :disposition => 'attachment'
    flash[:notice] = "Your file has been downloaded"
  end

但我不知道,我应该在我的表演动作中放什么,这样我才能下载文件?

我做到了这一点:

<td><%= @sample.upload_file_name =%></td>
    <%= link_to 'Download', :action => :download, :path =>@sample.upload.url, :type => @sample.upload_content_type %>

但它显示错误:找不到带有 id=download 的示例

谁能帮我?

4

4 回答 4

2

认为您需要更改您的 link_to 以发送 :id (这就是控制器操作使用 params [:id] 寻找的内容)

<%= link_to 'Download', :action => :download, :id => @sample.id %>

Soz Karlis 在你发帖时正在写作:D

于 2012-05-21T15:13:49.480 回答
0

=link_to 'download', @sample.upload.path 这是最简单的方法))

于 2012-05-21T15:20:01.903 回答
0

假设您正确设置下载命名路由,您可以说

<%= link_to 'Download', download_sample_path(@sample) %>
于 2012-05-21T15:35:28.973 回答
0

看起来您的路线不匹配。

这就是为什么,你必须:

  1. 为您的routes.rb添加额外的路由以进行下载操作。
  2. 如前所述,您必须将链接添加到您的视图 (link_to)。

阅读这篇文章以获得更高级的下载功能: http ://thewebfellas.com/blog/2009/8/29/protecting-your-paperclip-downloads

于 2012-05-21T16:36:16.533 回答