レコードに関連付けられている画像がない場合、関連付けられた画像を呼び出す画像タグが表示されないようにするにはどうすればよいですか?
<%= image_tag @agent.avatar.url %>
...そのエージェントに関連付けられている画像がない場合は、「Missing」というテキストが表示されます。最初に利用可能な画像があるかどうかをテストしてから、テストでtrueが返された場合は、上記のタグをレンダリングします。
さらに良いことに、画像が特に提供されていない場合、デフォルトの画像を指定する方法はありますか?
以下を使用して、モデルにアタッチメントが関連付けられているかどうかを確認します。
<% if @agent.avatar.file? %>
<%= image_tag @agent.avatar.url(:normal) %>
<% else %>
No attachment available!
<% end %>
アバターに複数のサイズがある場合:
has_attached_file :avatar,
:styles => {:small => '30x30#', :large => '100x100#'},
:default_url => '/images/missing_:style.png'
for Rails 3:
has_attached_file :avatar,
:styles => {:small => '30x30#', :large => '100x100#'},
:default_url => '/assets/images/missing_:style.png'
さて、私はそれの一部を手に入れました。
デフォルトの画像の指定はモデルで行われます
has_attached_file :avatar, :default_url => '/images/brokers/agents/anonymous_icon.jpg'
数バイト少ない:
<% if @agent.avatar? %>
<%= image_tag @agent.avatar.url(:normal) %>
<% else %>
No attachment available!
<% end %>
条件よりも:default_urlを使用することをお勧めします。
モデルでdefault_urlが指定されている場合、存在するメソッドを使用できますか? URLがデフォルトであるか、アップロードされたものであるかを確認します。
<% if @agent.avatar.present? %>
<%= image_tag @agent.avatar.url(:normal) %>
<% else %>
No attachment available!
<% end %>
あなたはこれを使うことができます
user.photo.exists?(:medium).
以前も同じ問題がありましたが、次を使用して解決しました。
<% if @post.image.exists? %>
<%= image_tag @post.image.url %>
<% end %>