2012-07-11 32 views
0

我跟着this guide了解如何将文件上传到我的服务器上的安全目录,而不是公共(默认)。当我尝试去展会查看链接时,我得到:安全目录文件上传与Carrierwave失败(制作)

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 

我应该改变这个路径?

+0

这是一个表单,而f是表单对象?如果是这样,请尝试'f.object.redocument.url' – 2012-07-11 21:54:48

+0

其实这是在视图中......与指南最后一行所做的相同。 – MoB 2012-07-11 22:01:29

+1

该错误表明它在表单中,并且f是表单生成器对象。你是积极的,你不是在一种形式?什么是“f”变量? – 2012-07-11 22:04:16

回答

2

OK,会在这里肢体...但我认为你有这样的事情设置:

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 
+0

干得好我的朋友。性格是什么:'依恋'呢?我没有补充说,但它仍然有效。同样地雷格式化:x_sendfile => true。感谢这是我正在寻找的解决方案。 – MoB 2012-07-11 22:27:06