2011-05-11 53 views
4

我升級我的工作應用1.9.2,但無法找到答案如下:紅寶石1.9.2拉姆達與回形針

我創建了一個資產,像這樣在我的控制器:

@asset = Asset.new(params) 

,然後在我的模型使用lambda動態生成像這樣的樣式:

has_attached_file :asset, 
    :styles => lambda { |attachment| attachment.instance.choose_styles} 

然後我檢查某個值,那是在我的PARAMS像這樣:

def choose_styles 
    if self.item_name == 'Car' 
    { :small => ["200x200>"], :medium => ["400x400>"], :large => ["700x700>"], :full_screen => ["1000x700>"] } 
    else 
    ........ 
end 

問題是在1.9.2之前item_name是零,直到這已經運行,然後似乎從params中設置。這一切工作切換回1.8.7

是否有人可以看到幫助我的東西?

感謝 裏克

+1

嘗試另一種語法對於lambda,例如'Proc.new {... code ...}或1.9的「stabby」語法' - > {... code ...}' – RyanScottLewis 2011-05-18 22:10:38

+0

它應該在1.8.7和1.9.2。你確定沒有其他區別嗎?兩種環境下的回形針寶石版本是否相同? Rails版本呢?其他插件可能不同? – 2011-09-19 22:07:49

+0

任何解決方案?我一直面對同樣的問題。在我看來,樣式過程被稱爲7次(在任何屬性設置之前2次)。基於這個要點的結論:https://gist.github.com/4663975 – Marcelo 2013-01-29 12:50:48

回答

0

我知道這不是你的問題適合的答案。順便說一句,您可以切換到載波(https://github.com/jnicklas/carrierwave)。您可以更細緻地選擇格式來創建各種版本並嵌套它們。

舉個例子,一個ipothetic AssetUploader可能是:

... 
version :thumb_200x200 do 
    process :resize_to_fill => [200,200] 
end 

version :big_600x600 do 
    ... 
end 
... 
version :car, :if => in_category(:car)? 
    version :thumb_200x200 
    version :another_etc 
end 
... 
protected 
    def in_category?(name) 
    model.item_name.downcase == name.to_s 
    end 
... 

這僅僅是代碼的例子,調整您的需求;)

歡呼聲, A.