我正在尝试在保存原件后将缩略图保存到s3,但它似乎不起作用。但是原始文件就在那里。
我的猜测是,由于s3正在直接提交图像,因此缩略图创建回调不会发生。
我尝试过做.recreate_versions!
,我甚至看到s3做了一些我通常会在调用中看到的东西,但是image.url(:thumb)
仍然提供了404结果的链接。
这是我的上传者代码:
include CarrierWave::MiniMagick
include CarrierWaveDirect::Uploader
version :thumb do
process :resize_to_fill => [100, 100]
end
storage :fog
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
这是生成直接提交表单到s3的模板代码:
<% badge.image_uid.success_action_redirect = "http://" + request.host_with_port + "/badge_builders/" + badge.badge_builder.id.to_s + "/edit" %>
<%= direct_upload_form_for badge.image_uid do |f| %>
<div class="form-group">
<%= f.file_field :image_uid, required: true %>
<%= f.submit 'Submit', class: 'btn btn-primary btn-lg' %>
</div>
<% end %>
我做错了吗?或者,没有一个优雅的非补丁解决方案?谢谢你的帮助!
答案 0 :(得分:0)
我认为我对回调的本能似乎是正确的。这是修复它的原因(在success_action_redirect逻辑中):
if params[:key] #and @builder.badge.key.include? "${filename}"
@builder.badge.key = params[:key]
@builder.badge.save
@builder.badge.image_uid.recreate_versions!
@builder.badge.image_uid = @builder.badge.key
@builder.badge.save
end