Sign in

Зарегистрируйтесь, чтобы стать полноправным участником сообщества Masterpro.ws.

Включаем Active Storage и загрузку изображений в Amazon S3. Part 2

Продолжение материала Включаем Active Storage и загрузку изображений в Amazon S3. Реализуем в панели администрирования Active Admin управление изображениями для блога - загрузку и удаление - локально либо на серверах Amazon S3.

Using Ruby on Rails Active Storage image uploads for Active Admin backed resources

 

How to Build an Image Upload Feature with Rails, Active Admin and Active Storage
How to Build an Image Upload Feature with Rails, Active Admin and Active Storage

 

Взглянуть Blog on Rails на Heroku.

Увидеть на гитхабе.

 

ActiveAdmin.register Slider do
  permit_params :published_at, :name, images: []

  scope :all
  scope :published
  scope :unpublished

  action_item :publish, only: :show do
    link_to 'Publish', publish_admin_slider_path(slider), method: :put unless slider.published_at?
  end

  action_item :unpublish, only: :show do
    link_to 'Unpublish', unpublish_admin_slider_path(slider), method: :put if slider.published_at?
  end

  action_item :delete_images, only: :show do
    link_to 'Delete Images', delete_images_admin_slider_path(slider), method: :delete if slider.images.attached?
  end

  member_action :publish, method: :put do
    slider = Slider.find(params[:id])
    slider.update(published_at: Time.zone.now)
    redirect_to admin_slider_path(slider)
  end

  member_action :unpublish, method: :put do
    slider = Slider.find(params[:id])
    slider.update(published_at: nil)
    redirect_to admin_slider_path(slider)
  end

  member_action :delete_images, method: :delete do
    slider = Slider.find(params[:id])
    slider.images.purge_later
    redirect_to admin_slider_path(slider)
  end

  form do |f|
    f.inputs 'Slider' do
      f.input :name
      f.input :images, as: :file, input_html: { multiple: true }
    end
    f.actions
  end
  show do |t|
    attributes_table do
      if t.images.attached?
          t.images.each do |img|
            span do
              image_tag img.variant(resize_to_limit: [100, 100])
            end
          end
      end
      row :name
      row :created_at
      row :updated_at
      row :published_at
    end
  end
end

 

А если необходимо удалить не все приаттаченные изображения разом, а только одно из них; или же два - три? - чаще всего так ведь и бывает, ряд изображений меняем на новые, что-то оставляем на месте.

Ну вот как-то так, например. Вполне рабочий вариант, хотя и незамысловатый. Удаление одной иллюстрации по клику на ее пиктограмме:

 

  member_action :delete_image, method: :delete do
    slider = Slider.find_by(params[:name])
    slider.images[params[:id].to_i].purge_later
    redirect_to admin_slider_path(slider)
  end

  if t.images.attached?
     t.images.each_with_index do |img, index|
        span do
          link_to delete_image_admin_slider_path(index), method: :delete do
              image_tag img.variant(resize_to_limit: [100, 100])
           end
         end
      end
   end

 

Оставить комментарий

Добавьте ваш комментарий

Комментарии в блоге

  • Гена Какой сложный и отвратительный те.... всем привет, зовут меня Гена-мудило, по профессии я срущий на чужих сайтах копеечный бот, по-совместительству…

    Суббота, 03 апреля 2021

    Опубликовано в: Про IT Selection, gray salary и Барака Обаму
  • Aleksej Доброго дня! Повторюсь, контент статьи представляет собой лишь концепт, хотя показанный код и был в свое время оттестирован и является…

    Пятница, 26 марта 2021

    Опубликовано в: Виджет amoCRM: экспорт данных в Google Docs
  • ОлегАверс Здравствуйте. Скажите, можно ли с Вашей помощью настроить и АВТОМАТИЧЕСКИ (например, ежедневно) выгружать из АМО и Битрикс24 в Эксель следующие…

    Среда, 24 марта 2021

    Опубликовано в: Виджет amoCRM: экспорт данных в Google Docs
  • Aleksej Интересно отметить: за всю свою жизнь в российском IT у меня не было ни одного проекта - а в пору,…

    Вторник, 19 января 2021

    Опубликовано в: Про IT Selection, gray salary и Барака Обаму
  • Рамат Они до сих пор такую шляпу предлагают с оформлением в известную американскую компанию через ИП или самозанятого, на прошлой неделе…

    Пятница, 15 января 2021

    Опубликовано в: Про IT Selection, gray salary и Барака Обаму