我跟着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
我应该将此路径更改为什么?
答案 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