(图片属于帖子)
图像上传器可以工作,但仅当我在 Post Edit 上上传图像时。我希望在创建帖子时上传图像。
图片上传 ("") 在新帖子表单中,所以我猜 Carrierwave 正在尝试在创建帖子之前将图片上传到指定路径,导致它没有知道在哪里上传。
这是 ImageUploader 文件:
class TrackImageUploader < CarrierWave::Uploader::Base
def cache_dir
"#{Rails.root}/tmp/uploads"
end
include CarrierWave::RMagick
#storage :file
#storage :fog
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
version :featured do
process :resize_to_fill => [210, 145]
end
def extension_white_list
%w(jpg jpeg gif png)
end
end
我猜上面代码中的 store_dir 负责将图像保存在 Amazon S3 上的相应路径中。
我将如何使它在发布后上传图像,以便它可以获得 Post.id ?
最佳答案
我遇到了完全相同的问题,但我找到了解决方案。
我的 ImageUploader.rb 看起来像这样: https://gist.github.com/egbertp/7572501 。在此文件的第 9 行,您将看到 include CarrierWaveDirect::Uploader
。通过使用直接上传技术,您的站点用户将他/她的文件直接上传到 Rackspace 云。但是,在上传时,您的数据库中尚未创建 Image 模型,从而导致错误(正如您猜对的那样)。
通过禁用直接上传技术,站点用户首先将图像发送到您的网络服务器,然后创建图像模型并将其保存在数据库中。在我的 ImageUploader 类中,这也是必要的,因为我希望我的网络服务器处理图像,以创建缩略图版本。
我希望这会帮助你,或者将来的其他人。
此致,
埃格伯特
关于ruby-on-rails - Rails : Uploading Images to Amazon S3 via Carrierwave only works on "Edit",我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11187665/