2012-07-26 109 views
0

我允许我网站上的用户上传最多三个图像。所以在我的形式,我有以下几个要素:我已经选择了在rails/paperclip中处理图像数组

<label>Additional Images*<span class="note">(Maximum: 3, 200 pixels wide)</span></label> 
<%= f.file_field :images, { :multiple => "", :accept => "image/*" } %> 
<div id="images"></div> 

一些JavaScript代码验证只有3张或更少,并且它还会创建图像的缩略图,并增加了他们作为孩子的div#图像。当用户提交表单,则:图片参数填充的图像信息的数组,看起来像这样:

[ #<ActionDispatch::Http::UploadedFile:0x00000007269588 
    @original_filename="test_banner.jpeg", 
    @content_type="image/jpeg", 
    @headers="Content-Disposition: form-data; name=\"custom_form[images][]\"; filename=\"test_banner.jpeg\"\r\nContent-Type: image/jpeg\r\n", 
    @tempfile=#<File:/tmp/RackMultipart20120726-7134-3hqdve>>, 
    #<ActionDispatch::Http::UploadedFile:0x00000007269510 
    @original_filename="test_portrait.jpeg", 
    @content_type="image/jpeg", 
    @headers="Content-Disposition: form-data; name=\"custom_form[images][]\"; filename=\"test_portrait.jpeg\"\r\nContent-Type: image/jpeg\r\n", 
    @tempfile=#<File:/tmp/RackMultipart20120726-7134-18fcs0m>>, 
    #<ActionDispatch::Http::UploadedFile:0x00000007269498 
    @original_filename="test_signiture.jpeg", 
    @content_type="image/jpeg", 
    @headers="Content-Disposition: form-data; name=\"custom_form[images][]\"; filename=\"test_signiture.jpeg\"\r\nContent-Type: image/jpeg\r\n", 
    @tempfile=#<File:/tmp/RackMultipart20120726-7134-1q5fy2f>> ] 

在我的模型,我有3个属性:

has_attached_file :image1, 
    ... 

has_attached_file :image2, 
    ... 

has_attached_file :image3, 
    ... 

我试图获取它,以便将与表单一起发送的图像参数中的信息分离并发送到模型中的相应图像属性,并且如果用户仅上载一个或两个图像,则其他属性为零。有没有一种方法可以使用回形针在轨道上完成这项工作?

回答

0

我强烈建议您制作3个x file_fields。然后,一切排成一行,你的验证将全部正常工作。我知道这不是很光滑,但对于1-3张图片......并不是什么大不了的。

+0

我知道这样会容易一些,但这对用户来说会非常不方便,对我的应用来说这非常重要 – 2012-07-26 20:37:58