Come mostra l'immagine nascosta nella graffetta quando non è presente alcuna immagine
-
08-07-2019 - |
Domanda
Come posso impedire la visualizzazione del tag immagine che chiama l'immagine associata se nessuna immagine è associata al record?
<%= image_tag @agent.avatar.url %>
... mi dà il testo " Mancante " se non esiste alcuna immagine associata a quell'agente. Voglio testare per vedere prima che sia disponibile un'immagine, quindi rendere il tag sopra se il test ritorna vero.
Meglio ancora, posso comunque specificare un'immagine predefinita se non viene specificata alcuna immagine?
Soluzione
Uso quanto segue per scoprire se un modello ha un allegato associato:
<% if @agent.avatar.file? %>
<%= image_tag @agent.avatar.url(:normal) %>
<% else %>
No attachment available!
<% end %>
Altri suggerimenti
Se l'avatar ha più dimensioni:
has_attached_file :avatar,
:styles => {:small => '30x30#', :large => '100x100#'},
:default_url => '/images/missing_:style.png'
per Rails 3:
has_attached_file :avatar,
:styles => {:small => '30x30#', :large => '100x100#'},
:default_url => '/assets/images/missing_:style.png'
Okay, quindi ne ho preso una parte.
La specifica di un'immagine predefinita avviene nel modello
has_attached_file :avatar, :default_url => '/images/brokers/agents/anonymous_icon.jpg'
Pochi byte in meno:
<% if @agent.avatar? %>
<%= image_tag @agent.avatar.url(:normal) %>
<% else %>
No attachment available!
<% end %>
È meglio usare: default_url piuttosto che condizioni.
Se nel modello è stato specificato un default_url è possibile utilizzare il metodo presente? per verificare se l'URL è predefinito o caricato.
<% if @agent.avatar.present? %>
<%= image_tag @agent.avatar.url(:normal) %>
<% else %>
No attachment available!
<% end %>
Puoi usarlo
user.photo.exists?(:medium).
Ho anche avuto lo stesso problema prima, ma l'ho risolto usando:
<% if @post.image.exists? %>
<%= image_tag @post.image.url %>
<% end %>