2015-07-05 4 views
13

Uso Refile with Rails 4. Sto seguendo il loro tutorial per multiple image upload. Ogni post può avere più immagini. I miei modelli simile a questa:Ri: gemma: più file caricati

Post.rb:

has_many :images, dependent: :destroy 
accepts_attachments_for :images, attachment: :file 

Image.rb:

belongs_to :post 
attachment :file 

posso caricare i file, sottili utilizzando:

<%= f.attachment_field :images_files, multiple: true, direct: true, presigned: true %> 

ma quando Provo a recuperare un'immagine come:

<%= attachment_image_tag(@post.images, :file, :small) %> 

ottengo l'errore:

undefined method file for #<Image::ActiveRecord_Associations_CollectionProxy:0x007fbaf51e8ea0> 

Come posso recuperare un'immagine con REFILE utilizzando il caricamento di immagini multiple?

+0

Ecco la fonte per attachment_image_tag: https://github.com/refile/refile/blob/master/lib/refile/rails/attachment_helper.rb#L39 –

+0

Ho anche dimenticato di dire che se lo faccio '@ post.images.inspect', ottengo un'associazione con ogni oggetto che ha il file nil, e il file_id è impostato su quello preselezionato, quindi penso che la parte funzioni bene. È solo quando cerco di visualizzare l'immagine che sbaglia. –

+0

Che cos'è '@ post'? È un *** singolo record *** o una *** raccolta di record ***? Per favore pubblica il codice per '@ post'. – Pavan

risposta

5

Al fine di recuperare le immagini che appartiene ad un post, è necessario scorrere l'serie di immagini.

<% @post.images.each do |image| %> 
    <%= attachment_image_tag(image, :file, :fill, 300, 300) %> 
<% end %> 

L'helper attachment_image_tag introito:

  • [REFILE :: Allegato] oggetto: Istanza di una classe che ha un file allegato.
  • [Symbol] nome: Il nome della colonna attacco

Così qui, @posts.images detiene una serie di image oggetto. È quell'oggetto che ha un file allegato.

class Image < ActiveRecord::Base 
    belongs_to :post 
    attachment :file 
end 

Poi, quando si scorrere images, si danno alla aiutante del image object, e il nome della colonna di attacco, qui :file.

+0

@Frorent Ferry, questo non funziona, ho ricevuto l'errore: metodo non definito' file 'per #

+0

Hai un'file_id: string' su la tua migrazione delle immagini? Hai eseguito'rake db: migrate '? –

+0

@Frorent Ferry, Sì, ho un file_id: stringa per il mio modello di immagine. Mostra nel mio file di schema, quindi è stato sicuramente migrato. –

0

Sei sul ramo principale?

gem 'refile', require: "refile/rails", git: 'https://github.com/refile/refile.git', branch: 'master' 
+0

Questo dovrebbe essere il commento – ketan

+0

Non ho avuto abbastanza rep per commentare ... – Goodviber