使用Carrierwave失败的安全目录文件上载(生产)

时间:2012-07-11 21:50:19

标签: ruby-on-rails ruby-on-rails-3 carrierwave

我跟着this guide学习如何将文件上传到我服务器上的安全目录,而不是公开(默认)。当我试图去节目查看链接时,我得到:

undefined method `redocument' for #<ActionView::Helpers::FormBuilder:0xa2ae338>
near: <%= link_to File.basename(f.redocument.url), "/uploads/#{f.id}/#{File.basename(f.redocument.url)}" %> 

渲染链接时遇到问题。我在这里错过了什么吗?我不应该逐行复制这个代码吗?它们没有指定我是否应该替换'redocument',但我的模型名称是Entry,文件链接存储的字符串是mv_link。任何人都知道修复是什么?

更新:希望朝着正确的方向发展

我将'f.redocument'的所有案例都更改为'@ entry.mv_link'。现在在显示页面上,链接就在那里。但是,当我单击它并尝试下载时,控制器指定的路径将被破坏。这就是控制器

def download
  path = "/#{redocument.redocument}"
  send_file path, :x_sendfile=>true
end

我应该将此路径更改为什么?

1 个答案:

答案 0 :(得分:2)

好的,在这里继续......但我觉得你有类似这样的设置:

class Entry < ActiveRecord::Base
  mounts_uploader :mv_link, YourUploaderClass
end

在您的控制器中,您需要找到条目,然后从mv_link

获取路径
def download
  @entry = Entry.find(params[:id])
  send_file @entry.mv_link.path, disposition: 'attachment', x_sendfile: true
end