傑克達與瑞兒絲的大小事

快速筆記整理網站開發上碰到的各種技巧和問題,免得年紀大忘光,至少還有一個地方可以查找

Tag Archives: custom

擴展 Paperclip 加入 hash 目錄參數,自訂 :path 和 :url

Paperclip 是 Rails 的一個上傳圖片插件,它可以很方便的幫助我們實現上傳圖片和裁剪圖片的功能。在安裝完 Paperclip 後,Paperclip 會有一組預設指定圖片顯示和存放的路徑,如下:

:url => "/uploadfiles/:class/:attachment/:id/:basename/:style.:extension",
:path => ":rails_root/public/uploadfiles/:class/:attachment/:id/:basename/:style.:extension"

但是因應專案的需求不同,你可能會要重新調整這組存放和顯示的路徑設定,例如,針對上傳的圖片會依照使用者放到對應的目錄下,所以我們需要在路徑加上使用者 ID,如下:

:url => "/uploadfiles/:user_id/:class/:attachment/:id/:basename/:style.:extension",
:path => ":rails_root/public/uploadfiles/:user_id/:class/:attachment/:id/:basename/:style.:extension"

這時該怎麼做呢?

實作方式:

1. 建立 config/initializers/paperclip_extensions.rb,加入以下程式碼

Paperclip.interpolates :user_id do |attachment, style|
return current_user.id
end

2. 修改 model 中 Paperclip 定義的 :path 和 :url 路徑

:url => "/uploadfiles/:user_id/:class/:attachment/:id/:basename/:style.:extension",
:path => ":rails_root/public/uploadfiles/:user_id/:class/:attachment/:id/:basename/:style.:extension"

參考文章:

https://github.com/thoughtbot/paperclip

http://stackoverflow.com/questions/4041373/paperclip-custom-path-and-url

http://www.oschina.net/question/54100_24721

廣告