我有RoR项目,住在heroku。我有booty(带图像上传功能的编辑器),我有cloudinary。
我已经设置了uploader,cloudinary api密钥和初始化程序(如果需要,可以显示)。现在,当我尝试在bootsy上传图像时 - 它会创建数据库行,并在cloudinary中创建图像。但是在靴子的js窗口中,空<img>
ruby '2.3.1'
gem 'rails', '~> 5.1.1'
gem 'bootsy'
gem 'carrierwave'
gem 'fog'
gem 'cloudinary', '~> 1.8.1'
1)uploaders / bootsy / image_uploader.rb
module Bootsy
class ImageUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
# storage Bootsy.storage
include Cloudinary::CarrierWave
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
version :large do
process :eager => true
process resize_to_fit: [
700, 700
]
end
version :medium do
process :eager => true
process resize_to_fit: [
300, 300
]
end
version :small do
process :eager => true
process resize_to_fit: [
150, 150
]
end
version :thumb do
process :eager => true
process resize_to_fit: [
150, 150
]
end
def extension_white_list
%w(jpg jpeg gif png)
end
end
end
2)initializers / bootsy.rb
Bootsy.setup do |config|
config.image_versions_available = [:small, :medium, :large, :original]
config.storage = :fog
end
3)models / article.rb
class Article < ApplicationRecord
include Bootsy::Container
mount_uploader :image, Bootsy::ImageUploader
mount_uploader :main_image, ArticleImageUploader
mount_uploader :list_image, ArticleImageUploader
end
P.S好吧,我真的不知道 - 我只是在公共存储库中重复这个错误。 https://bitbucket.org/dekakisalove/bootsy_tes/我会尽快为这个问题增加赏金。
答案 0 :(得分:2)
此问题是由于类store!
的方法Cloudinary::CarrierWave::Storage
的返回值不正确
要解决此问题,您可以使用多种变体,例如:
在config/initializers/cloudinary_store.rb
module CloudinaryStorage
def store!(file)
super || uploader.metadata
end
end
ActiveSupport.on_load :after_initialize do
Cloudinary::CarrierWave::Storage.prepend CloudinaryStorage
end
或app/uploaders/image_uploader.rb
module Bootsy
class ImageUploader < CarrierWave::Uploader::Base
after :store, :reload_data
def reload_data(file)
model.reload
end
# etc..