2012-05-10 3 views
0

ペーパークリップは、フォームパラメータが処理される前にスタイルを初期化し、それによってカスタムサイズを指定しようとする試みを無視します。Rails 3:ペーパークリップの条件付きスタイルがあまりにも早く初期化されました

モデル:私はスタイルが定義され、new_widthnew_heightconvertコマンドトリガがコントローラによって渡された値が割り当てられているログファイルを見ることができます

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 

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

関連する問題