2012-07-26 111 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