Загрузка файлов с помощью Activeadmin Rails с помощью скрепки

Я использую Active admin в качестве серверной части приложения rails. Я хочу загрузить файл. Как я могу выполнить эту функцию?


person Sebastien    schedule 16.08.2011    source источник
comment
Я никогда не использовал Active Admin специально, но драгоценный камень Paperclip помогает легко загружать файлы и прикреплять их к любой модели. github.com/gotitbot/paperclip   -  person airlok    schedule 16.08.2011


Ответы (4)


Я нашел способ использовать скрепку с активным администратором.

Я добавил этот код в свою модель «Событие»:

has_attached_file :map, :styles => { :medium => "238x238>", 
                                   :thumb => "100x100>"
                                 }

И я сделал это для своей модели администратора:

ActiveAdmin.register Event do
 form :html => { :enctype => "multipart/form-data" } do |f|
   f.inputs "Details" do
    f.input :continent
    f.input :event_type
    f.input :name
    f.input :title
    f.input :content
    f.input :date_start, :as => :date
    f.input :date_end, :as => :date
    f.input :place
    f.input :map, :as => :file
    f.input :image, :as => :file, :hint => f.template.image_tag(f.object.image.url(:medium))
    f.input :userfull_info
    f.input :price
    f.input :phone, :as => :phone
    f.input :website, :as => :url
  end
  f.buttons
 end
end

Чтобы использовать его на странице индекса, вы должны использовать:

column "Image" do |event|
    link_to(image_tag(event.image.url(:thumb), :height => '100'), admin_event_path(event))
  end
  default_actions
end
person Sebastien    schedule 17.08.2011
comment
Вы можете использовать f.input: image,: hint = ›текущее изображение: # {f.template.image_tag (f.object.image.url (: thumb))} - person Nazar; 11.11.2011
comment
Будет ли это загружаться в s3 по умолчанию с помощью скрепки? - person JehandadK; 15.07.2014
comment
Мне пришлось использовать f.actions, а не f.buttons, чтобы заставить это работать. - person Joseph; 09.09.2014
comment
Это кажется отличным, но он не выполняет предварительный просмотр изображения, если вы только что выбрали его и еще не загрузили изображение. Есть ли способ сделать это? - person Tiago; 22.02.2017

Получил, что это сработало для Rails 4.1 и Paperclip 4.1:

Модель

class Hotel < ActiveRecord::Base

has_attached_file :thumbnail, :styles => { :medium =>     "300x300#", :thumb => "200x200#" }
validates_attachment :thumbnail, content_type: { content_type:     ["image/jpg", "image/jpeg", "image/png"] }

end

Модель администратора

ActiveAdmin.register Hotel do

permit_params :name, :description, :price, :thumbnail

form do |f|
  f.inputs "Project Details" do
    f.input :name
    f.input :thumbnail, :required => false, :as => :file
    # Will preview the image when the object is edited
  end
  f.actions
 end

show do |ad|
  attributes_table do
    row :name
    row :thumbnail do
      image_tag(ad.thumbnail.url(:thumb))
    end
    # Will display the image on show object page
  end
 end
end
person kokemomuke    schedule 02.04.2014
comment
Я получил paperclip NoHandlerError, и мне пришлось form :html => {:multipart => true} do |f| - person givanse; 18.11.2014
comment
@givanse надо было делать form :html ... где? - person Aleks; 08.06.2016

Я использую рельсы 3.0.1 и следующий код

f.input :image, :hint => "current image: #{f.template.image_tag(f.object.image.url(:thumb))}" 

вернуть строку. После поиска решения я его нашел.

f.input :image, :hint => f.template.image_tag(f.object.image.url(:thumb))

Отправить прямо объект, вернет изображение в html

person mmarqueti    schedule 04.12.2011
comment
Вы можете использовать первую строку кода, просто вызовите html_safe в строке (после двойных кавычек). - person Brett Bender; 03.01.2012

В последней версии ActiveAdmin и Rails 6 для отображения поля файла нам нужно использовать приведенный ниже код

ActiveAdmin.register Project do
  permit_params :name, :uploads
  

  form multipart: true do |f|
    f.inputs "Project Details" do
      f.input :name
      f.input :uploads, as: :file, required: false
    end
    f.actions
  end

end

В некоторых старых версиях AA также работал следующий код.

f.input: загрузки, требуется: false

person Amal Kumar S    schedule 21.03.2014
comment
Не работает, все равно нужно добавить как:: file in rails 6 - person Aditya Joardar; 05.10.2020