Ruby on rails 4 Carrierwave没有';t在谷歌云存储中保存缓存
我有一个表单,上面有输入字段和在谷歌云存储(GCS)中上传图像的按钮。如果输入的值无效,将呈现此表单。渲染后图像丢失。我使用Carrierwave和Fog/Google。我已尝试添加缓存,但没有帮助。图像保存在GCS中,图像缓存不保存,但缓存文件的URL存在于html代码中。 上载程序:Ruby on rails 4 Carrierwave没有';t在谷歌云存储中保存缓存,ruby-on-rails-4,carrierwave,fog,Ruby On Rails 4,Carrierwave,Fog,我有一个表单,上面有输入字段和在谷歌云存储(GCS)中上传图像的按钮。如果输入的值无效,将呈现此表单。渲染后图像丢失。我使用Carrierwave和Fog/Google。我已尝试添加缓存,但没有帮助。图像保存在GCS中,图像缓存不保存,但缓存文件的URL存在于html代码中。 上载程序: class PhotoUploader < CarrierWave::Uploader::Base # Include RMagick or MiniMagick support: # include
class PhotoUploader < CarrierWave::Uploader::Base
# Include RMagick or MiniMagick support:
# include CarrierWave::RMagick
include CarrierWave::MiniMagick
process resize_to_fit: [500, 500]
# Choose what kind of storage to use for this uploader:
# storage :file
if Rails.env.development?
#storage :file
def store_dir
Rails.root + "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
def cache_dir
Rails.root + "uploads/tmp/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
else
#storage :fog
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
def cache_dir
"uploads/tmp/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
end
# Override the directory where uploaded files will be stored.
# This is a sensible default for uploaders that are meant to be mounted:
# Provide a default URL as a default if there hasn't been a file uploaded:
def default_url
ActionController::Base.helpers.asset_path([version_name, 'form-default.png'].compact.join('_'))
end
视图:
我做过这个问题。解决方法就是我已经解决了这个问题。解决方案就在这里
require 'carrierwave/storage/file'
require 'carrierwave/storage/fog'
CarrierWave.configure do |config|
if not Rails.env.development?
config.storage = :fog
config.fog_provider = 'fog/google'
config.fog_credentials = {
provider: 'Google',
google_storage_access_key_id: ENV['GSASAK'],
google_storage_secret_access_key: ENV['GSSAK'],
persistent: false
}
config.fog_directory = 'my-bucket'
config.asset_host = 'https://storage.googleapis.com/my-bucket'
config.fog_public = true
else
config.storage = :file
end
end
<% if @form.photo? %>
<div class="photo-new"><img src= <%= @form.photo_url %> id="output"/></div>
<% else %>
<div class="photo-new"><img id="output"/></div>
<% end %>
<div class="container" style="background-color: #e0e0e0" title="Upload photo of your product">
<label for="upload" class="uploadButton">UPLOAD PHOTO</label>
<%= f.hidden_field :photo_cache %>
<%= f.file_field :photo, id: "upload", onchange: "loadFile(event)" %>
class Form < ActiveRecord::Base
mount_uploader :photo, PhotoUploader
def form_params
params.require(:form).permit!
end