首页 > 解决方案 > 上传照片

问题描述

我正在尝试使用 Carrierwave 上传一系列照片。

编辑:这些是在 Postman + Change in controller 中修复数组后更新的文件

这是控制器:

class PhotoController < ApplicationController
  def upload_multiple
    photos_params.each do |uploaded_photo|
        @current_user.photos.create(:photo => uploaded_photo)
    end
    render json: {
      status: @current_user.photos.last.photo.inspect,
    }, status: 200
  end

  def photos_params
    params.permit(:photos => [])
  end
end

这是照片的模型文件 photo.rb:

class Photo < ApplicationRecord
  belongs_to :user
  mount_uploader :photo, PhotoUploader
end

在 user.rb 我有

has_many :photos

在上传程序中,唯一未注释的行是:

class PhotoUploader < CarrierWave::Uploader::Base

  storage :file

  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end
end

在 Postman 中,这是我上传文件的方式:

在此处输入图像描述

现在记录正在保存在数据库中,但根本没有上传任何图像。目录上传是空的。

我究竟做错了什么?

标签: ruby-on-railsruby-on-rails-5carrierwave

解决方案


当只是循环 photo_params 时,它不能正常工作,因为图像应该在 photo_params [“photos”] 中循环。

尝试将代码更改为:

def upload_multiple
  def upload_multiple
    photos_params["photos"].each do |uploaded_photo|
        @current_user.photos.create(:photo => uploaded_photo)
    end
    render json: {
      status: @current_user.photos.last.photo.inspect,
    }, status: 200
  end

  def photos_params
    params.permit(:photos => [])
  end
end

邮递员中的参数


推荐阅读