获取多个图像Ruby的文件大小

时间:2014-09-30 13:57:34

标签: ruby arrays ruby-on-rails-4 nested-forms hash

我正在使用nested_form并且允许用户上传多个图像,每个图像虽然我想验证文件大小然后根据文件大小在视图中添加一个类来说明将图像包裹在红色边框中用户知道哪个图像失败了。

我现在遇到的问题是哈希中的第一个图像正在被评估,然后在哈希中设置其后所有其他图像的值(希望这是有意义的)

 def max_file_size
  image = params[:animal][:animal_images_attributes]

   image.each do |k,v|
    img_cache = v["image_cache"]
    img = v["image"]

    tempfilepath = img.tempfile.path
    file_size = File.size(tempfilepath)
      if file_size > 1.megabytes
        @largeImage = true
      end
   end
 end

在我看来,我有这个

<!-- File Upload -->
<%= f.fields_for :animal_images do |build| %>
  <div class="form-group has-feedback">
    <% if build.object.image? %>
      <div class="<%= 'large_image' if @largeImage == true %>"> ***here***
       <%= image_tag build.object.image_url :small_animal_image %>
       <%= build.hidden_field :image_cache %>
       <%= build.label :image, 'Remove Image' %>
      <%= build.check_box :_destroy, class: 'form-control' %>
  </div>

<% end %>

因此,对于每个图像,我需要进行评估,然后分配类,如果它是真的

我缺少什么?

任何帮助表示赞赏

1 个答案:

答案 0 :(得分:0)

def max_file_size
 ...
  if file_size > 1.megabytes
    **@largeImage = true**
  end
 ...
end

定义了哪个类max_file_size是设置largeImage标志的原因。我觉得你想要更像的东西:

img.largeImage = true

您要在单个图像上设置值(可能需要将此标志添加到图像对象)。显然,如果没有更多的代码,很难调试,但这会像我可能出现的问题一样跳出来。