首页 > 解决方案 > Rails API - 本地文件未上传到 s3/Heroku

问题描述

这些是传递给我的 HTTP POST 请求的参数,如下所示:

Parameters: {
"vision"=>{
  "description"=>"dsfsfdsfdsfsd",
  "image"=>"file:///Users/ozgecokyasar/Library/Developer/
     CoreSimulator/Devices/EDD6C498-DACD-433E-B96D-3A30BAE7BA6D/data/
     Containers/Data/Application/
     6F633096-E665-46BB-952F-2775DD85A4A6/Library/Caches/
     ExponentExperienceData/%2540anonymous%252Fmanifestation-react- 
     3ac1cbe2-549f-
     49e7-8506-ef29638d1643/ImagePicker/0E426602-8110-4A9C-8B9A- 
     96D0BF1B2ECE.jpg"
  }
}

但是,它保存为这样(图像为零):

SQL (2.1ms)  INSERT INTO "visions" ("image", "description", "created_at",
 "updated_at", "user_id") VALUES ($1, $2, $3, $4, $5) RETURNING "id" 
 [["image", nil], ["description", "dsfsfdsfdsfsd"], ["created_at", "2019-
01-12 01:14:34.341356"],["updated_at", "2019-01-12 01:14:34.341356"], 
["user_id", 3]]

为什么图像列为零?

visions_controller.rb:

  def create
    @vision = current_user&.visions.build(vision_params)
    @vision.remote_image_url = params[:image]

    @vision.save
    render :create, status: :created
  end

视觉模型:

class Vision < ApplicationRecord
    belongs_to :user
    mount_uploader :image, ImageUploader

end

但是,如果我将 visions_controller 中的创建操作更改为:

  def create
    @vision = current_user&.visions.build(vision_params)
    @vision.remote_image_url = 'ANY REMOTE IMAGE URL'

    @vision.save
    render :create, status: :created
  end

为什么当我添加 params[:image] 时,传递的图像参数被保存为 nil?

标签: rubyamazon-s3ruby-on-rails-5carrierwavefog

解决方案


推荐阅读