タイトルどうりではありますが、APIモードにてActiveStorageに画像を複数保存することができずに困っております。
かれこれ1ヶ月悩んでおります。
rubyではモデルにてhas_many_attached :myImageを追加して
コントローラーでは@image = Image.new params.permit(:uuid, :title, :detail, myImage: [])
とparams.require(:image).permit(:uuid, :title, :detail, myImage: [])
を追加するだけので、間違いはないと思うのですが、
画像の送信方法がおかしいのでしょうか?
ちなみにhas_one_attachedで画像1枚の時はちゃんと保存されています。
宜しくお願いします。
curl
1curl -F uuid=0987654321 -F title=test01 -F detail=詳細 -F myImage=@/Users/dog_logo.jpg -F myImage=@/Users/wwdc.jpg http://(IP):3000/images
ruby
1class Image < ApplicationRecord 2 include Rails.application.routes.url_helpers 3 # has_one_attached :myImage 4 has_many_attached :myImage 5 6 # 画像のurl取得のためのメソッド 7 def image_url 8 myImage.attached? ? url_for(myImage) : nil 9 end 10end
ruby
1class ImagesController < ApplicationController 2 before_action :set_image, only: [:show, :update, :destroy] 3 4 # GET /images 5 def index 6 @images = Image.all.select('id', 'uuid', 'title', 'detail') 7 8 image_info = @images.as_json(methods: :image_url) 9 render json: {imageCount: image_info.size, item: image_info } 10 end 11 12 # GET /images/1 13 def show 14 render json: @image 15 end 16 17 # # POST /images 18 def create 19 20 @image = Image.new params.permit(:uuid, :title, :detail, myImage: []) 21 if @image.save 22 render json: {result: 0} 23 else 24 render json: {result: 1} 25 end 26 end 27 28 # PATCH/PUT /images/1 29 def update 30 if @image.update(image_params) 31 render json: @image 32 else 33 render json: @image.errors, status: :unprocessable_entity 34 end 35 end 36 37 # DELETE /images/1 38 def destroy 39 @image.destroy 40 end 41 42 private 43 # Use callbacks to share common setup or constraints between actions. 44 def set_image 45 @image = Image.find(params[:id]) 46 end 47 48 # Only allow a trusted parameter "white list" through. 49 def image_params 50 params.require(:image).permit(:uuid, :title, :detail, myImage: []) 51 end 52end 53
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/01 04:58
2019/12/01 05:00
2019/12/01 05:04