I use Active admin as my rails application backend. I want to make a file upload. How can I accomplish this functionality?
File upload with Activeadmin Rails using paperclip
Asked Answered
I've never used Active Admin specifically, but the Paperclip gem helps you easily upload files and attach them to any model. github.com/thoughtbot/paperclip –
Vested
I found a way to use Paperclip with Active Admin.
I added this code in my model "Event" :
has_attached_file :map, :styles => { :medium => "238x238>",
:thumb => "100x100>"
}
And i did this for my admin model :
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
To use it on the index page, you have to use :
column "Image" do |event|
link_to(image_tag(event.image.url(:thumb), :height => '100'), admin_event_path(event))
end
default_actions
end
You can use f.input :image, :hint => "current image: #{f.template.image_tag(f.object.image.url(:thumb))}" –
Carrousel
Will this upload to s3 by default using paperclip? –
Rosenblatt
I had to use "f.actions", not "f.buttons" to get this to work. –
Absorbing
This seems great, but it doesn't preview the image if you just selected it and didn't upload the image yet. Is there a way to do this? –
Kop
Got it worked for Rails 4.1 and Paperclip 4.1:
Model
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
Admin Model
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
I got
paperclip NoHandlerError
and I had to form :html => {:multipart => true} do |f|
–
Tuneberg @Tuneberg you had to do
form :html ...
where? –
Impending I'm using the rails 3.0.1 and the following code
f.input :image, :hint => "current image: #{f.template.image_tag(f.object.image.url(:thumb))}"
return a string. After search a solution, i found it.
f.input :image, :hint => f.template.image_tag(f.object.image.url(:thumb))
Send direct the object, will return a image to the html
You can use the first line of code, just call
html_safe
on the string (after the double quotes). –
Kass In latest Version of ActiveAdmin & Rails 6 for displaying the file field we need to use the below code
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
In some old version of AA following code also worked.
f.input :uploads, required: false
Doesn't work, you still have to add as: :file in rails 6 –
Fifty
© 2022 - 2024 — McMap. All rights reserved.