CarrierWaveDirect passthrough上传似乎没有在s3中创建备用:thumb版本

时间:2015-04-09 19:24:56

标签: ruby-on-rails image-processing carrierwave

我正在尝试在保存原件后将缩略图保存到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 %>

我做错了吗?或者,没有一个优雅的非补丁解决方案?谢谢你的帮助!

1 个答案:

答案 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