使用Carrierwave将图像保存在红宝石工作者中

时间:2011-08-11 11:32:51

标签: ruby-on-rails ruby image upload carrierwave

我正在尝试编写一个方法来存储来自红宝石工作者内部给定网址的图像。它出现在我的Rails应用程序中,我在其中显示对象图像。 以下是我的想法:

def store(url)
    @object = Object.find(1)
    @object[:image] = CarrierWave::Uploader.store!(image_url)
end

它似乎根本不起作用。 有线索吗? 还有另外一种方法吗?

[编辑]

目前的情况如下:

def store
  @object = Object.find(1)
  my_uploader = ImageUploader.new

  image = open("http://twitpic.com/show/iphone/xxxx.jpg") 
# or for a local file:
  image = File.open(Rails.root.join('xxxx.png'))

  @object[:image] = my_uploader.store!(image)
  @object.save!
end

[:image] attibute中的文件名仍然是错误的。它给出了“[:store_versions!]”。如何正确获取文件名?

[EDIT2]

通过在保存之前添加@artwork[:image] = my_uploader.filename来确定文件名。 但是@object = Object.find(1)不起作用。如何从worker中访问我的rails应用程序中的Object类?

2 个答案:

答案 0 :(得分:1)

@object.image.store!(image)终于完成了这项工作!

答案 1 :(得分:0)

您需要创建一个新的上传器对象并将其指向您的文件

image = File.open(Rails.root.join('path', 'to', 'file.png'))
@object[:image] = YourUploader.new(image)