2012-10-09 144 views
1
<%= semantic_form_for(@image, :url => { :action => "create_friend_upload" }, :html => {:multipart => true}) do |f| %> 
    <%= f.inputs do %> 
    <%= f.input :image, :input_html => {:multiple => true}, name: "gallery[image]" %> 
    <%= f.hidden_field :friend_upload, :value => true %>  
    <%= f.hidden_field :user_id %> 
    <%= f.hidden_field :friend_uploader, :value => current_user.name %> 
    <% end %> 
    <%= f.buttons do %> 
    <%= f.commit_button :button_html => {:class => "primary"} %> 
    <% end %> 
    <% end %> 

問題是我一直在提交一個數組,Carrierwave無法處理。它一直說name=\"gallery[image][]\"而不只是name=\"gallery[image]\"。 (見下文)。正因爲如此,我也不斷收到錯誤信息can't convert nil into String使用Carrierwave和JQuery文件上傳的多文件上載

@headers="Content-Disposition: form-data; name=\"gallery[image][]\"; filename=\"VW 3.jpeg\"\r\nContent-Type: image/jpeg\r\n", 

任何人都知道如何解決這個問題?謝謝!

更新:

我沒有看到jQuery的賴安的railscasts視頻以及,他的此修復程序並沒有爲我工作。

Gallery.rb

class Gallery < ActiveRecord::Base 
    attr_accessible :image, :name, :friend_upload, 
    mount_uploader :image, GalleryUploader 
end 

庫控制器

def friend_upload 
@image = Gallery.new 
end 

def create_friend_upload 
@image = Gallery.create(params[:gallery]) 
end 
+0

你能告訴我們的畫廊模式聲明? –

+0

@ D3mon-1stVFW,我用圖庫的模型和控制器更新了這個問題。謝謝。 – noob

+0

你可以嘗試繞過載波,並直接上傳你的文件到S3,如下所述:http://pjambet.github.com/blog/direct-upload-to-s3/,這個例子是爲一個文件,但與一個文件輸入倍數多,效果很好。 – pjam

回答

4

因爲你指定:multiple => true,導軌產生name="gallery[image][]"。由於https://github.com/rails/rails/pull/8108,升級到最新版本的導軌(3.2.13)時,您可能還會遇到此問題。

簡單的解決將是沿着

$('#fileupload').fileupload({ 
    paramName: 'gallery[image]' 
}); 

線的東西。這利用paramName選項來指定文件格式數據

參考文獻:

+1

由於3.2.13的更改,我遇到了這個問題,這讓我感到非常困惑......直到我找到答案時才感到困惑。謝謝!! –

+1

我首先看到它是Rails 4的一個特定問題,非常感謝這個優雅的解決方案! –

0

這個問題似乎是因爲你沒有把裏面nameinput_html,使用simple form那東西大概semantic form以及