2012-08-03 80 views
5

我正在使用Paperclip-FFMEG將視頻文件上傳到我的開發環境(並且最終在我的項目投入生產時最終到本地服務器)。從Ruby on Rails 3.2.6中的Paperclip生成的文件中刪除問號

當視頻被上傳,文件名,默認情況下,如下所示:

/system/modelnames/paperclipnames/.../mynewfile.mp4?xxxxxxxxxx 

相信問號後的10位數字是一個時間戳。

但是,我將用來播放視頻的播放器不喜歡在文件附件之後有任何東西 - 所以我想在將URL傳遞到播放器之前去掉問號和時間戳。 。

我試着用下面的紅寶石(我認爲)條功能:

temp_variable = model.paperclipattribute.url(:blah).strip('?')[0] 

但是,Rails的拋出了一個錯誤:

wrong number of arguments(1 for 0) 

我把它我這樣做不對嗎?其他解決方案?我不想完全關閉時間戳,因爲在這種情況下我只需要這樣做。

謝謝!

回答

16

如果你想這樣做在給定附件的任意位置,並且無需傳遞額外參數,則可以在模型中調用has_attached_file方法時設置use_timestamp選項。因此,要構建Paperclip自述文件中給出的示例:

has_attached_file :avatar, 
    :styles => { :medium => "300x300>", :thumb => "100x100>" }, 
    :default_url => "/images/:style/missing.png", 
    :use_timestamp => false 
2

你想用split來代替我相信。 strip沒有任何參數,它只是刪除前導空白和尾隨空格

+0

太棒了,我知道這很簡單!謝謝! – Graeme 2012-08-03 19:54:57

+0

@Graeme確保接受這個答案,點擊它的分數旁邊的複選標記,如果它適合你! – slhck 2012-08-05 21:31:43

6

希望這可以作爲我自己的問題的答案(因爲它可能對別人偶然發現這篇文章有用),但我「已經因爲發現了一種替代(和更合適)的方式來處理這個問題的false參數添加到URL()顯示視圖中的內容時,如下所示:

model.paperclipattribute.url(:whateverstyle, false) 

時間戳將自動除去。我認爲這樣比較好,因爲我建議的split方法可能會刪除您不打算刪除的內容 - 例如,如果您的文件被稱爲「Is_this_a_question _?_ Yes_it_is.mp4?xxxxxx」,那麼第一個問號後的所有內容可能會被刪除(即該文件將被解讀爲「這是一個question_」,從而破壞文件名。

我沒有測試過這一點,所以我可能是錯的。

+0

謝謝,+1,它工作。這裏是一個文檔:[http://www.rubydoc.info/github/thoughtbot/paperclip/Paperclip%2FAttachment%3Aurl](http://www.rubydoc.info/github/thoughtbot/paperclip/Paperclip%2FAttachment%3Aurl ) – 2016-01-19 22:26:11

5

全局默認它們關閉,只需將它放在config/initializers/paperclip.rb文件中即可。

Paperclip::Attachment.default_options[:use_timestamp] = false