2011-08-16 14 views
40

Uso l'amministratore attivo come back-end dell'applicazione rails. Voglio fare un upload di file. Come posso realizzare questa funzionalità?Caricamento file con Activeadmin Rails con paperclip

+0

Non ho mai usato Admin attivo specifico, ma la gemma Paperclip aiuta puoi caricare facilmente i file e collegarli a qualsiasi modello. https://github.com/thoughtbot/paperclip – airlok

risposta

74

Ho trovato un modo per utilizzare Paperclip con Active Admin.

ho aggiunto questo codice nel mio modello "Evento":

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

e ho fatto questo per il mio modello di amministrazione:

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 

di usarlo sulla pagina di indice, è necessario utilizzare :

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

Puoi utilizzare f.input: image,: hint => "immagine corrente: # {f.template.image_tag (f.object.image.url (: thumb))} " – Nazar

+0

Questo caricherà su s3 di default usando paperclip? – JehandadK

+2

Ho dovuto usare "f.actions", non "f.buttons" per farlo funzionare. – Joseph

6

sto usando le rotaie 3.0.1 e il seguente codice

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

restituire una stringa. Dopo aver cercato una soluzione, l'ho trovato.

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

Invia dirigere l'oggetto, restituirà un immagine al html

+2

Puoi usare la prima riga di codice, basta chiamare 'html_safe' sulla stringa (dopo le virgolette). –

5

In ultima versione di ActiveAdmin & Rails 4 per la visualizzazione del campo del file abbiamo bisogno di usare il codice qui sotto

In precedenza abbiamo utilizzato f.input: arrivi, come: =>: file di

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

Got ha funzionato per Rails 4.1 e 4.1 Paperclip:

Modello

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 Modello

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

Ho ottenuto 'paperclip NoHandlerError' e ho dovuto' form: html => {: multipart => true} do | f | ' – givanse

+0

@givanse dovevi fare' form: html ... 'dove? – Aleks

Problemi correlati