0

Paperclip 在处理表单参数之前初始化样式,从而忽略了我指定自定义调整大小的尝试。

模型:

    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 触发。

如何在处理图像之前将自定义尺寸传递给 Paperclip 以定义样式?

4

1 回答 1

0

在保存模型之前,您是否尝试过在模型中使用回调来计算宽度和高度?

before_save :set_styles

从附件上的回形针文档中,回形针附件在模型保存时保存并在分配时处理文件。

于 2012-05-17T04:18:29.067 回答