0

我正在运行一个 web 应用程序,它通过回形针上传图像,然后在 opencv 支持的 ruby​​ 扩展 gem 中对它们执行图像处理,这需要一个字符串路径才能运行。我一直在使用的代码如下:

imageFiles # => Array of ActiveRecord objects with attached paperclip files ('image')
filenames = Array.new()
imageFiles.each{ |imFile|
    filenames.push( imFile.image.path )
}
imgproc = ImageProcessor.new # => extension
imgproc.process( filenames )

这给了我以下错误:

can't convert Paperclip::Attachment into String

如果我推:

imFile.image.file_name

相反,我的错误变为:

undefined method `file_name' for /xxx/xxx/xxx/000/000/062/original/img.jpg?1340296339:Paperclip::Attachment

我是在正确的道路上,还是我错过了一步?提前致谢!

4

3 回答 3

0

我不知道 opencv 支持的工作原理,但您可以尝试仅推送图像对象。

filenames.push( imFile.image )
于 2012-06-21T16:40:38.733 回答
0

原来,我之前将图像推送到文件名数组而不是文件本身,这是鸭式语言的危险之一。

于 2012-07-08T16:06:41.260 回答
0

我在尝试发送文件时遇到了同样的错误。就我而言,我只需要将对象转换为字符串。

    file = @my_object.my_document
    path = open(file.to_s)
    send_file(path,
       :type => "application/pdf",
       :disposition => 'inline', :filename => "My File")
于 2013-09-26T20:03:44.247 回答