ruby-on-rails – 使用Carrierwave一次上传多个文件到Rails应用
发布时间:2020-12-17 04:19:53 所属栏目:百科 来源:网络整理
导读:我很接近……非常接近……我能够上传单个文件……但是当我将表单的file_field类型更改为:multiple =是的,所以我可以一次上传多个图像,我的上传文件被包裹在一个数组中……’accepts_nested_attributes_for`的’魔力’丢失了. 编辑: 经过更多的检查,我想知
我很接近……非常接近……我能够上传单个文件……但是当我将表单的file_field类型更改为:multiple =>是的,所以我可以一次上传多个图像,我的上传文件被包裹在一个数组中……’accepts_nested_attributes_for`的’魔力’丢失了.
编辑: 希望有更多Rails经验的人可以加入…… PARAMS: {"utf8"=>"?","authenticity_token"=>"9jXvIwcllct7UyUfo6cvhEucQf2u3SY50SuaCLtFO4c=","gallery"=>{ "name"=>"First Gallery","photos_attributes"=>{"0"=>{ "image"=>[ #<ActionDispatch::Http::UploadedFile:0x00000104b78978 @original_filename="first_test_image.jpg",@content_type="image/jpeg",@headers="Content-Disposition: form-data; name="gallery[photos_attributes][0][image][]"; filename="first_test_image.jpg"rnContent-Type: image/jpegrn",@tempfile=#<File:/var/folders/bQ/bQYZC2ukFZCvbKzEDGRtJE+++TI/-Tmp-/RackMultipart20110622-4459-vz78ee>>,#<ActionDispatch::Http::UploadedFile:0x00000104b78950 @original_filename="second_test_image.jpg",@headers="Content-Disposition: form-data; name="gallery[photos_attributes][0][image][]"; filename="second_test_image.jpg"rnContent-Type: image/jpegrn",@tempfile=#<File:/var/folders/bQ/bQYZC2ukFZCvbKzEDGRtJE+++TI/-Tmp-/RackMultipart20110622-4459-1jzhhyg>> ] } } },"commit"=>"Save","action"=>"create","controller"=>"galleries"} #app/models/gallery.rb class Gallery < ActiveRecord::Base has_many :photos,:dependent => :destroy accepts_nested_attributes_for :photos end #app/models/photo.rb class Photo < ActiveRecord::Base belongs_to :gallery mount_uploader :photo,PhotoUploader end #config/routes.rb resources :galleries do resources :photo,:only => [:create,:destroy] end GalleriesController def new @gallery = Gallery.new @gallery.photos.build respond_to do |format| format.html # new.html.erb format.json { render json: @gallery } end end ... def create @gallery = Gallery.new(params[:gallery]) respond_to do |format| if @gallery.save format.html { redirect_to @gallery,notice: 'Gallery was successfully created.' } format.json { render json: @gallery,status: :created,location: @gallery } else format.html { render action: "new" } format.json { render json: @gallery.errors,status: :unprocessable_entity } end end end 解决方法
你可以为params数组做一点破解,比如:
aux = [] params[:gallery][:photos_attributes][:image].each do |f| aux << {:image => f} end params[:post][:photos_attributes] = aux @gallery = Gallery.new(params[:gallery]) 我有类似的问题,我知道这是一个丑陋的黑客,但它对我有用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |