#ruby-on-rails #cloudinary
#ruby-on-rails #cloudinary
Вопрос:
мир!
После внедрения интеграции активного хранилища Cloudinary легко заставить его работать в форме.
Нам просто нужно добавить в наш simple_form_for
<%= f.input :photo, as: :file %>
НО, если мы хотим использовать виджет загрузки Cloudinary, нет простого способа добавить этот файл в form
.
Что я пробовал: 1- разрешить виджету загружать изображение; 2- обновить значение скрытого ввода URL-адресом загруженного изображения; 3- в контроллере при создании модели загрузите изображение и прикрепите его к модели:
require 'open-uri'
file = URI.open(photo_url)
@user.photo.attach(io: file, filename: 'profile_photo.jpg')
# [...]
private
def photo_url
params.require(:user).permit(:photo_url)[:photo_url]
end
Это работает, НО оно загружает дважды одно и то же изображение и — ИМХО — крайне неэффективно.
Есть идеи?
Спасибо!
Удачи, получайте удовольствие!
Комментарии:
1. Я не вижу способа напрямую перейти из виджета загрузки в ActiveStorage. ActiveStorage очень ограничен, и нет хорошего способа указать, где находится файл для записи ActiveStorage. Недавно я удалил ActivesStorage из проекта по этой причине и из-за проблем с масштабируемостью, которые он вызывает. Короче говоря, я не думаю, что то, что вы ищете, можно сделать. Ваш единственный шанс edgeguides.rubyonrails.org/… что может позволить вам передать событие JS из виджета в прямую загрузку