Reputation: 267
I have a Event model such that Event has_many :images, as: :imageable and Image model such that Image belongs_to :imageable, polymorphic: true. I am using carrierwave and am able to upload a single image to an Event easily. But the required scenario is to upload multiple images to each Event. I also get the images in parameters when uploading multiple images. I just don't know how to use these parameters and store the images
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"}
Upvotes: 0
Views: 234
Reputation: 1958
It may be time consuming for uploading multiple images in one go, instead you can use any jquery plugin like uploadify which will send a single AJAX request for each upload. That way you can also monitor which image upload is failed or success.
Upvotes: 0