2013-04-17 15 views
6

Sto usando paperclip per caricare più immagini. Sto anche usando Active Admin. Finora, sono stato in grado di caricare più immagini e associarle al mio modello di 'prodotto'. Sono inoltre in grado di visualizzare i "nomi" "" di tutte le immagini associate nella pagina dell'indice. Tuttavia, non sono in grado di scoprire come visualizzare "tutte" le immagini (non solo i nomi) nella pagina di presentazione del modello del prodotto. Si prega di trovare il codice qui sotto.Come visualizzare più immagini in ActiveAdmin

\ app \ modelli \ product.rb

has_many :images, :dependent => :destroy 
accepts_nested_attributes_for :images, :allow_destroy => true 

\ app \ modelli \ image.rb

belongs_to :product 
has_attached_file :image, :styles => { 
    :thumb=> "100x100>", 
    :small => "300x300>", 
    :large => "600x600>" 
    } 

\ app \ admin \ products.rb

index do 
    column "Images" do |product| 
    product.images.map(&:image_file_name).join("<br />").html_safe 
    end 
end 

show do |product| 
    attributes_table do 
    row "Images" do 
     ul do 
     li do 
      image_tag(product.images.first.image.url(:small)) 
     end 
     li do 
      image_tag(product.images.second.image.url(:small)) 
     end 
     li do 
      image_tag(product.images.last.image.url(:small)) 
     end 
     end 
    end 
    end 
end 

I ho trovato qualcosa che funziona ma questa è davvero pessima programmazione. Al momento ho 3 immagini associate a ciascun prodotto e sto usando il codice sopra nel mio blocco di spettacoli. Si prega di suggerire un modo migliore per farlo.

+0

Ho modificato il codice per visualizzare l'immagine solo se è presente. 'image_tag (product.images.first.image.url (: small)) if! product.images.first.nil?' Tuttavia, questo codice ha ancora una limitazione di max. 3 immagini. Si prega di consigli su come ottenere questo in un modo migliore. – ansh0809

+0

vuoi dire che devi mostrare ogni immagine non solo 3 di loro? – Fivell

risposta

12

vuoi dire che devi visualizzare ciascuna immagine non solo 3 di loro? Se sì provare a

row "Images" do 
    ul do 
    product.images.each do |img| 
     li do 
     image_tag(img.image.url(:small)) 
     end 
    end 
    end 
end 
+0

Grazie mille ... Funziona. Tuttavia, c'è un modo in cui posso visualizzare la prima immagine come: piccola e il resto come: pollice? – ansh0809

+0

sì, prima di tutto visualizza prima l'immagine che usa l'ambito offset (1) e usa il ciclo – Fivell

Problemi correlati