2015-12-26 21 views
0

我的問題從here開始。 我正在使用Sqlite3,我的模型關係如下所示。載波多個圖像上傳一個按鈕

class ImagePost < ActiveRecord::Base 
    has_many :attachments 
end 

我的附件

class Attachment < ActiveRecord::Base 
    belongs_to :image_post 
    mount_uploader :img, S3uploaderUploader 
end 

的事情是我想讓我的用戶一個鍵上傳自己的形象。現在,我確實

<%= form_tag img_upload_create_path, method: "POST", html: { multipart: true } do %> 
     <%= hidden_field_tag("image_post_id", @image_post.id) %> 
     <%= hidden_field_tag("user_id", current_user.id) %> 

     <%= file_field_tag 'user_pic', multiple: true, accept: 'image/png,image/gif,image/jpeg' %> 

     <%= submit_tag "image-upload", :class => "btn btn-primary btn-lg" %> 
     <% end %> 

我image_upload控制器,

class ImgUploadController < ApplicationController 
    def create 
    @user_img = Attachment.create(
     hasuk_house_id: params[:image_post_id], 
     user_id: current_user.id, 
     img: params[:user_pic] 
     ) 
    end 
end 

但是,當我提交的文件,@user_img.img = nil我該怎麼辦?

+0

你有沒有讀過[this](https://github.com/carrierwaveuploader/carrierwave#multiple-file-uploads) –

+0

是的,我做過。但我也讀[這](http://stackoverflow.com/questions/30951168/workaround-for-carrierwave-multiple-file-upload-using-sqlite3-in-development)。它不會產生任何問題? –

+0

沒錯,你將無法在sqlite中使用'json'或'array'列類型。 –

回答

1

左看右看之後,您有多個問題會在這裏,第一:

<%= form_tag img_upload_create_path, method: "POST", html: { multipart: true } 

應該是:

<%= form_tag(img_upload_create_path, { multipart: true, method: "POST"}) 

form_tag參數是結構化一點從form_for不同)

然後你需要指示rails將你的文件作爲一個數組放在params中,通過使用名稱修飾符離子形式元素。所以不是:

<%= file_field_tag 'user_pic', multiple: true, accept: 'image/png,image/gif,image/jpeg' %> 

你需要:

<%= file_field_tag 'user_pic[]', multiple: true, accept: 'image/png,image/gif,image/jpeg' %> 

終於在你的控制,你必須在文件中params[:user_pic]這是一個數組,所以你通過它必須循環和創建您的每個附件:

params[:user_pic].each do |pic| 
    Attachment.create(
     hasuk_house_id: params[:image_post_id], 
     user_id: current_user.id, 
     img: pic 
) 
end 

希望有所幫助。

+0

是啊!你的解決方案是完美的。我試圖讓我的img'to json和尋找解決方案。無論如何,你的解決方案非常好!謝謝。 –

+0

沒問題,很高興我能幫上忙。 –