簡體   English   中英

在沒有JavaScript的情況下使用carrierwave多次上傳

[英]Multiple uploads with carrierwave without javascript

想法是將圖像數組循環到控制器中,然后存儲它們中的每一個。 該請求顯示有關上傳圖像的正確信息

{"utf8"=>"✓",
"authenticity_token"=>"usbr1ma8uKWBPiVFKh8AKoGYeaZTWAlLXscMBlFYyhw=",
"painting"=>{"name"=>"",
"image"=>[#<ActionDispatch::Http::UploadedFile:0x007fb414becad8 @original_filename="union_creek.jpg", @content_type="image/jpeg",
@headers="Content-Disposition: form-data; name=\"painting[image][]\"; filename=\"union_creek.jpg\"\r\nContent-Type: image/jpeg\r\n",
@tempfile=#<File:/var/folders/80/2pcl195n7_x0l8bnrjrp4xw40000gn/T/RackMultipart20130105-7179-kr8a7e>>,
#<ActionDispatch::Http::UploadedFile:0x007fb414beca10 @original_filename="what_lies_beneath.jpg",
@content_type="image/jpeg",
@headers="Content-Disposition: form-data; name=\"painting[image][]\"; filename=\"what_lies_beneath.jpg\"\r\nContent-Type: image/jpeg\r\n",
@tempfile=#<File:/var/folders/80/2pcl195n7_x0l8bnrjrp4xw40000gn/T/RackMultipart20130105-7179-iclmmw>>]},
"commit"=>"Create Painting",
"gallery_id"=>"13"}

但是,當載波嘗試存儲圖像時,出現了一個誤導性錯誤

Called id for nil, which would mistakenly be 4 -- if you really wanted the id of nil, use object_id

風景

= form_for [@gallery, @gallery.paintings.new] do |f|
  %p= f.text_field :name, placeholder: "Enter painting name"
  %p= f.file_field :image, multiple: true
  %p= f.submit %>

控制器

uploader = ImageUploader.new
params[:painting][:image].each do |img|
  uploader.store!(img) # crash here
end

我發現控制器有問題,但是我找不到更好的方法來用載體存儲多個文件。

有人可以指出我嗎? 謝謝

這是任何有相同問題的解決方案

params[:painting][:image].map { |img| gallery.paintings.create(name: img.original_filename , image: img)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM