Как сохранить изображение с URL с помощью Active Storage - PullRequest
0 голосов
/ 29 июня 2018

Мой вопрос о том, как я могу загрузить изображение с URL, когда я использую Active Storage. Я использовал код из post здесь, в Stackoverflow, но проходил через метод модели, параметр, который мне нужно сохранить в моей таблице. Любопытно, что я получаю следующую ошибку:

ActiveSupport::MessageVerifier::InvalidSignature in PostsController#update

Но когда я перезагружаю представление шоу, из этой модели изображения появляются сохраненными и развернутыми в моем представлении сообщений.

Вот мой код в Пост модель :

class Post < ApplicationRecord
  require 'open-uri'

  has_one_attached :image_one
  has_one_attached :image_two
  has_one_attached :url_image

  <b>before_save :grab_image</b>

  <b>
  def grab_image(url)
    downloaded_image = open(url)
    self.url_image.attach(io: downloaded_image, filename: "map.jpg", content_type:"image/jpg")
  end
  </b>
end

Это мой код в действии редактирования моего контроллера :

  def update
    @posturl = params[:post][:url_image]
    <b>@post.grab_image(@posturl)</b>
    respond_to do |format|
      if @post.update!(post_params)
        format.html { redirect_to @post, notice: 'Post was successfully updated.' }
        format.json { render :show, status: :ok, location: @post }
      else
        format.html { render :edit }
        format.json { render json: @post.errors, status: :unprocessable_entity }
      end
    end
  end

Apparently, the record is saved but i receive this problem

Я получил следующие ссылки, в которых рассказывается о возможности загрузки изображений с URL-адресов, но я не знаю, что еще я могу сделать:

Обзор активного хранилища - EdgeGuides

@ omnilord / Рельсы-5-2-activestorage-смягчающий-принятие-ловушка

Ответы [ 2 ]

0 голосов
/ 06 июля 2018

Может быть, эта работа для вас:

file = open(url)
user.image.attach(io: file, filename: "temp.#{file.content_type_parse.first.split("/").last}", content_type: file.content_type_parse.first)
0 голосов
/ 29 июня 2018

Вот пример:

file_url = image[:image_url]
download = open(file_url)
IO.copy_stream(download,
user.image.attach(
  io: download,
  filename: image[:name],
  content_type: image[:content_type],
))
...