尝试上传图片“如果要使用Cloudinary :: CarrierWave :: Storage作为缓存存储区,则需要实现#cache!”时出现此错误。 它在我的控制器中突出显示了这部分代码:
def update
@company.update(company_params)
redirect_to company_path(@company)
end
我正在使用Carrierwave将照片上传到cloudinary。 我的配置文件中有一个cloudinary.yml文件,初始化程序中有一个cloudinary.rb文件。
identitylogo_uploader.rb
class IdentitylogoUploader < CarrierWave::Uploader::Base
include Cloudinary::CarrierWave
process :convert => 'png'
process :tags => ['logo_entreprise']
version :standard do
process :resize_to_fill => [150, 150, :north]
end
version :thumbnail do
resize_to_fit(50, 50)
end
def public_id
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
end
company.rb
class Company < ApplicationRecord
mount_uploader :identitylogo, IdentitylogoUploader
end
companies_controller.erb
def update
@company.update(company_params)
redirect_to company_path(@company)
end
def company_params
params.require(:company).permit(:identitylogo, :name, :industry,
:employees, :website)
end
_form.erb
<%= simple_form_for @company do |f| %>
<%= f.input :name %>
<%= f.input :industry %>
<%= f.input :employees %>
<%= f.input :website %>
<%= f.input :identitylogo_cache, as: :hidden %>
<%= f.input :identitylogo, label: false %>
<%= f.button :submit %>
<% end %>
_show.html.erb
<img src="<%= @company.identitylogo %> " alt="Logo de
l'entreprise">
我注意到链接已生成,但文件未上传到cloudinary。
答案 0 :(得分:3)
在载波初始化器中添加了config.cache_storage = :file
,错误消失了。
CarrierWave.configure do |config|
config.cache_storage = :file
end
这是更改旧行为的提交:link
答案 1 :(得分:0)
似乎最新版本的CarrierWave与Cloudinary尚不兼容。
检查您的Gemfile和Gemfile.lock。我必须删除.rc结尾并重新启动服务器。