TypeError (Impossibile convertire nullo in String) Con Attachment_Fu
-
18-09-2019 - |
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?
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? %>
Questo potrebbe aiutare .. http://david-burger.blogspot.com/2008/ 10 / attachmentfu-con-optional.html