【问题标题】:Uploading photos carrierwave上传照片
【发布时间】:2019-04-06 15:03:55
【问题描述】:

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

编辑:这些是在 Postman 中修复数组 + 更改控制器后更新的文件

这是控制器:

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-rails ruby-on-rails-5 carrierwave


    【解决方案1】:

    当只是循环 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
    

    【讨论】:

    • 我将 url 更改为数据库中列的名称。现在将编辑代码以反映此更改
    • 赞成这一点以指出 url 问题。感谢那。但是问题还没有解决:/
    • 记录保存后能否发布控制台日志?
    • 我刚刚更新了这个问题。现在有问题和检查结果显示图像为空。这样就够了吗?
    • 嗨,我找到了答案。 photo_params 以照片数组的形式出现,当仅循环 photo_params 时它无法正常工作,因为图像在 photo_params [“photos”] 中循环。修改了我的答案,试试看。
    猜你喜欢
    • 1970-01-01
    • 2018-10-14
    • 2013-08-23
    • 2011-06-04
    • 2017-02-18
    • 2012-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多