carrierwave缓存未重新提交

use*_*798 10 ruby-on-rails ruby-on-rails-3 carrierwave

当我通过Carrierwave提交图像,并且缺少一个字段(即标题)时,将显示缓存的图像...

      <% if @post.avatar? %>
          <%= image_tag @post.avatar_url, :style => "width:300px"  %> 
          <%= f.hidden_field :avatar_cache %>
          <%= @post.avatar_url %>
      <% end %>
Run Code Online (Sandbox Code Playgroud)

但是,:avatar_cache字段为空.当我重新提交表单时,没有任何图像属性向前移动,所以我必须重新选择图像.

问题与此类似.CarrierWave在表单重新显示后没有保存上传,但没有答案.

怎么了?谢谢.

ste*_*iel 5

对我来说,问题是我有

accepts_nested_attributes_for :avatars, allow_destroy: true, reject_if: lambda { |avatar| avatar[:file].blank? }
Run Code Online (Sandbox Code Playgroud)

所以我拒绝了该文件,因为该文件不在那里

重要的是要注意文件本身不会持久,而只是文件缓存.这就是为什么carrierwave 文档建议:

向用户显示文件已上传可能是一个好主意,在图片的情况下,小缩略图将是一个很好的指标:


Ken*_*nny -1

尝试填充 avatar_cache 的值,以便当验证失败时,它将以以下形式预先填充:

<%= f.hidden_field :avatar_cache, :value => @post.avatar_cache %>
Run Code Online (Sandbox Code Playgroud)

当多次重新加载同一表单时(即验证多次失败时),这似乎对我有用。我认为他们在文档中遗漏了这一点。