在carrierwave rails中上传多个图像

时间:2014-12-23 09:31:32

标签: ruby-on-rails image time upload carrierwave

我有一个Event模型,使得事件has_many:images,如:imageable和Image model,这样Image belongs_to:imageable,polymorphic:true。我正在使用carrierwave,并且能够轻松地将单个图像上传到事件。但所需的方案是将多个图像上传到每个事件。上传多张图片时,我也会在参数中获取图像。我只是不知道如何使用这些参数并存储图像

Event.rb
class Event < ActiveRecord::Base
  has_many :images, as: :imageable
  mount_uploader :image, EventImageUploader



Image.rb

class Image < ActiveRecord::Base
    belongs_to :imageable, polymorphic: true



Parameters in console on multiple input



    Parameters: {"utf8"=>"✓", "authenticity_token"=>"h75pCP+/S9rt16aFMXAagtaJq5msxWBUt9wfYzSinB8=", "event"=>{"title"=>"sfdf", "starts_at"=>"2014-12-10 14:47", "ends_at"=>"2014-12-17 14:47", "url"=>"https://softwaysolutions.atlassian.net/wiki/display/RADIO/2014/10/31/Radio+App+Initial+DB+Design", "description"=>"fssdfdfsf",
 "image"=>[#<ActionDispatch::Http::UploadedFile:0x0000000a5e93e0 @tempfile=#<Tempfile:/tmp/RackMultipart20141223-12927-1izxog6>, @original_filename="a1.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"event[image][]\"; filename=\"a1.jpg\"\r\nContent-Type: image/jpeg\r\n">,
#<ActionDispatch::Http::UploadedFile:0x0000000a5e93b8 @tempfile=#<Tempfile:/tmp/RackMultipart20141223-12927-vs0l0e>, @original_filename="a7.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"event[image][]\"; filename=\"a7.jpg\"\r\nContent-Type: image/jpeg\r\n">,
#<ActionDispatch::Http::UploadedFile:0x0000000a5e9390 @tempfile=#<Tempfile:/tmp/RackMultipart20141223-12927-1q3vr93>, @original_filename="a8.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"event[image][]\"; filename=\"a8.jpg\"\r\nContent-Type: image/jpeg\r\n">, 
#<ActionDispatch::Http::UploadedFile:0x0000000a5e9368 @tempfile=#<Tempfile:/tmp/RackMultipart20141223-12927-1ccn4dk>, @original_filename="angular_logo.png", @content_type="image/png", @headers="Content-Disposition: form-data; name=\"event[image][]\"; filename=\"angular_logo.png\"\r\nContent-Type: image/png\r\n">,
#<ActionDispatch::Http::UploadedFile:0x0000000a5e9340 @tempfile=#<Tempfile:/tmp/RackMultipart20141223-12927-ur48if>, @original_filename="email_2.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"event[image][]\"; filename=\"email_2.jpg\"\r\nContent-Type: image/jpeg\r\n">]}, "commit"=>"Create Event"}

1 个答案:

答案 0 :(得分:0)

一次上传多个图片可能会耗费大量时间,而您可以使用任何jquery插件,如uploadify,它会为每次上传发送一个AJAX请求。这样,您还可以监控哪些图片上传失败或成功。