我正在尝试编写一个方法来存储来自红宝石工作者内部给定网址的图像。它出现在我的Rails应用程序中,我在其中显示对象图像。以下是我的想法:
@message = Message.create!
my_uploader = PhotoUploader.new
photo = open(image_url)
@message[:photo] = my_uploader.store!(photo)
@message[:photo] = my_uploader.filename
@message.save!
PhotoUploader:
def store_dir
Rails.env.production? ? (primary_folder = "production") : (primary_folder = "test")
"#{primary_folder}/media/#{model.id}"
end
Message类:
class Message < ActiveRecord::Base
attr_accessible :content, :photo, :user_id
mount_uploader :photo, PhotoUploader
end
model.id在存储路径中返回错误。即使保存后该模型也为零,文件存储在#{primary_folder}/media
答案 0 :(得分:1)
我认为您没有从模型中调用store!
,这就是model.id
不起作用的原因,因为model
是nil
这可能会为你做到:
@message = Message.create!
photo = open(image_url)
@message.photo = PhotoUploader.new
@message.photo.store!(photo)
@message.photo = @message.photo.filename
@message.save!
我在rails控制台中尝试了这个,@message[:photo].store!(photo)
给出了同样的错误,但@message.photo.store!(photo)
有效。