为什么我会得到“未定义的方法`strip!” for#“使用MiniMagick时?

时间:2012-06-17 23:17:54

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1

我将strip方法放在CarrierWave初始化器中:

 def strip
   manipulate! do |img|
     img.strip!
     img = yield(img) if block_given?
     img
   end
 end

并致电上传者:

 version :thumb do
   process :resize_to_fit => [180, nil]
   process :quality => 70
   process :strip   
 end

现在Rails吐出这个错误:

  

未定义的方法`strip!'对于#

2 个答案:

答案 0 :(得分:2)

未定义的#strip方法

您可以像这样定义方法:

def strip
  manipulate! do |img|
    img.strip!
    img = yield(img) if block_given?
    img
  end
end

但是从代码示例中不清楚 img 是否实际上有#strip或#strip!方法。错误是抱怨未定义的爆炸方法,所以请尝试img.strip

反思

如果这不起作用,您可能希望在方法中插入一些调试代码,以便您可以看到 img 到底是什么,以及它实际支持哪些方法。例如:

  manipulate! do |img|
    puts img.class
    puts img.methods.sort
    img.strip
    img = yield(img) if block_given?
    img
  end

希望有所帮助。

另请参阅

CarrierWave::MiniMagick

答案 1 :(得分:0)

只需删除

即可

<!/ H2>

来自地带。