2013-09-24 52 views
1

這是我upload.rb軌回形針上傳自定義URL路徑

class Upload < ActiveRecord::Base 
     belongs_to :post 
     has_attached_file :upload,styles: { medium: ["500x400>",:jpg], thumb: ["100x100>",:jpg]},url: "/post_images/post_:postid/:style/:filename" 

def postid 
     self.post_id 
end 
end 

我有POST_ID列。由於belongs_to代表我將爲一個帖子擁有多個圖片。但同時保存文件夾而不是post_25。它存儲爲post_:postid

但是,如果我給:id它正在工作。

我該如何解決它。有人能幫忙嗎。

回答

3

您應該使用Paperclip's interpolations來實現此功能。首先,在初始界定的插值開始:

# config/initializers/interpolations.rb 
Paperclip.interpolates :postid do |attachment, style| 
    'post_' + attachment.instance.post.id 
end 

然後,你可以直接使用:postid插在你的附件的URL聲明(記得第一次重新啓動服務器):

# app/models/upload.rb 
has_attached_file :upload,styles: { medium: ["500x400>",:jpg], thumb: ["100x100>",:jpg]},url: "/post_images/:postid/:style/:filename" 

注意:postid而不是僅僅是您在模型中定義的實例方法 - 回形針專用利用插值定義URL /路徑聲明中的動態變量。

+0

s現在嘗試其post_id:post_id不是post_id的值 – overflow

+0

請參閱我的解決方案更新。 – zeantsoi

1

在我的模型之一,我有

Paperclip.interpolates :invoice_file_name do |attachment, style| 
    attachment.instance.invoice_file_name 
end 

這是從回形針維基採取Github上。