Domanda

Sono gestiscono i file allegati nel mio Rails app con Attachment_fu, che fornisce un metodo public_filename per recuperare l'URL di un file. Lo sto usando su un modello chiamato copertina, quindi se voglio chiamare l'URL di un'immagine copertina caricata, in una visione che vorrei fare:

<%= image_tag(@cover.public_filename) %>

Questo funziona bene quando l'utente ha l'allegato del caso, ma nella mia applicazione non è un requisito per un utente di caricare un allegato.

Pertanto, chiamando @cover.public_filename lancerà un TypeError:. Impossibile convertire nullo nella stringa per l'ovvia ragione che il file è pari a zero

Comunque, sto avendo dei problemi aggiungendo logica a questo problema in modo efficace dal momento che l'oggetto è pari a zero, e tutti i miei tentativi con fare le cose come unless @cover.public_filename.nil? o if @cover.public_filename == nil sono stato infruttuoso e causare lo stesso tipo di errore.

Che cosa mi manca?

È stato utile?

Soluzione

non ho lavorato con attachment_fu, ma per come la vedo public_filename è il metodo che si basa su alcuni campi che sono pari a zero, quando non si dispone di attaccamento attaccato. Qui ho letto che attachment_fu dovrebbe sempre ha attacco - e questo è probabilmente un motivo per cui non ha funzionato per voi. L'autore suggerisce anche utilizzando graffetta plugin. Date un'occhiata!

Altri suggerimenti

<%= image_tag(@cover.public_filename) unless @cover.nil? %>

Spiacenti, non può commentare, quindi ecco un Aggiorna , invece:

@cover.public_filename? non funziona qui perché @cover è un oggetto nil e come tale non ha un metodo public_filename?.

nil.respond_to?('public_filename?') #=> false

Aggiornamento:

Lo rendono:

<%= image_tag(@cover.public_filename) if @cover && @cover.public_filename? %>

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top