2012-07-11 30 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