Обновить изображение с CarrierWave - PullRequest
0 голосов
/ 14 февраля 2019

Я использую CarrierWave для загрузки изображения в сообщение с Cloudinary

mount_uploader :picture, PostimageUploader

Это файл PostimageUploader:

class PostimageUploader < ::Uploader::Base

  include Cloudinary::CarrierWave
  process :convert => 'png'
  process :tags => ['post_picture']

  version :standart do
    process :resize_to_fill => [100, 150, :north]
  end

  version :thumbnail do
    resize_to_fit(50, 50)
  end

  def public_id
    return model.id
  end

end

Когда пользователь загрузил изображение, js вызывает ajax-запрос ксервер.

formData.append('picture',file)
fetch('http://localhost:3001/posts/image-upload', {
  method: 'POST',
  body: formData
})

Введенные параметры на стороне сервера:

Parameters: {"picture"=># 
<ActionDispatch::Http::UploadedFile:0x007fde206e7728 @tempfile=# 
<Tempfile:/var/folders/15/m1lbk9vs6930yn1zyk06wjs40000gn/T/ 
RackMultipart20190214-87479-5hoj5k.png>, @original_filename="Снимок 
экрана 2019-01-30 в 13.31.07.png", @content_type="image/png", 
@headers="Content-Disposition: form-data; name=\"picture\"; 
filename=\"\xD0\xA1\xD0\xBD\xD0\xB8\xD0\xBC\xD0\xBE\xD0\xBA 
\xD1\x8D\xD0\xBA\xD1\x80\xD0\xB0\xD0\xBD\xD0\xB0 2019-01-30 \xD0\xB2 
13.31.07.png\"\r\nContent-Type: image/png\r\n">}

Для загрузки изображения я использую следующую функцию:

post = Post.first

post.update(picture: params[:picture])

render json: {
    status: 200,
    picture: post.picture
}

Это не работает, jsonвернуть ноль.Но если я перезагружу пост:

post = Post.first

post.update(picture: params[:picture])
post = Post.first

render json: {
    status: 200,
    picture: post.picture
}

У JSON есть URL к новой картинке.Где я делаю ошибку?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...