Я использую 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 к новой картинке.Где я делаю ошибку?