2012-05-10 63 views
0

回形針在表單參數處理之前初始化樣式,因此忽略了我指定自定義大小的嘗試。Rails 3:回形針條件樣式初始化太早

型號:

attr_accessor :new_width, :new_height   

    has_attached_file :attachment, 
     styles: lambda { |attachment| attachment.instance.set_styles } 
     ... 

    def set_styles 
     # Default thumb: 
     styles = { thumb: '100x100>' } 

     # Resize original if new sizes have been specified 
     if new_width and new_height 
     styles[:original] = "#{new_width}x#{new_height}>" 
     end 

     styles 
    end 

我可以通過樣式定義的日誌文件和convert命令觸發前看到new_widthnew_height分配由控制器傳遞的值。

Rails的服務器日誌文件:

{:thumb=>"100x100>"} # logger.info in the model 
    ... 
    # Command :: convert ... etc 
    # [paperclip] Saving attachments. 
    ... 
    {:thumb=>"100x100>", :original=>"300x300>"} # logger.info in the model 

通過自定義尺寸被分配到該實例的時間,ImageMagick的命令已被觸發回形針。

如何將自定義尺寸傳遞給Paperclip以在圖像處理之前定義樣式?

回答

0

您是否曾嘗試在模型中使用回調來計算保存模型之前的寬度和高度?

before_save :set_styles 

從附件的回形針文檔中,當模型在分配時保存並處理文件時,回形針附件會保存。

+1

由於某種原因,我從來沒有想過嘗試這個看似明顯的解決方案。謝謝約翰 – Marco