2011-08-16 18 views
40

Utilizo Active admin como backend de mi aplicación Rails. Quiero hacer una carga de archivo. ¿Cómo puedo lograr esta funcionalidad?Carga de archivos con Activeadmin Rails con paperclip

+0

nunca he utilizado administración activa específicamente, pero la gema Paperclip ayuda puedes subir archivos fácilmente y adjuntarlos a cualquier modelo. https://github.com/thoughtbot/paperclip – airlok

Respuesta

74

Encontré una forma de utilizar Paperclip con Active Admin.

I añadido este código en mi modelo "Evento":

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

y lo hice esto para mi modelo de administración:

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 

de usarlo en la página de índice, usted tiene que utilizar :

column "Image" do |event| 
    link_to(image_tag(event.image.url(:thumb), :height => '100'), admin_event_path(event)) 
    end 
    default_actions 
end 
+4

Puede usar f.input: image,: hint => "imagen actual: # {f.template.image_tag (f.object.image.url (: thumb))} " – Nazar

+0

¿Esto se cargará a s3 de forma predeterminada con clip? – JehandadK

+2

Tuve que usar "f.actions", no "f.buttons" para que esto funcione. – Joseph

6

estoy usando los carriles 3.0.1 y el siguiente código

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

devolver una cadena. Después de buscar una solución, lo encontré.

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

Enviar dirigir el objeto, devolverá una imagen para el html

+2

Puede usar la primera línea de código, simplemente llame a 'html_safe' en la cadena (después de las comillas dobles). –

5

en la última versión de ActiveAdmin & Carriles 4 para visualizar el campo del archivo que tenemos que utilizar el código de abajo

Anteriormente hemos utilizado f.input: archivos, como: =>: archivo

ActiveAdmin.register Project do 
    permit_params :name, :uploads 


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

end 
13

Tienes que trabajó para Rails 4.1 y 4.1 Paperclip:

Modelo

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 

administración Modelo

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 
+0

Recibí 'paperclip NoHandlerError' y tuve que' form: html => {: multipart => true} do | f | ' – givanse

+0

@givanse tenías que hacer' form: html ... 'where? – Aleks

Cuestiones relacionadas