web-dev-qa-db-ja.com

画像がない場合にペーパークリップで画像を非表示にする方法

レコードに関連付けられている画像がない場合、関連付けられた画像を呼び出す画像タグが表示されないようにするにはどうすればよいですか?

<%= image_tag @agent.avatar.url %>

...そのエージェントに関連付けられている画像がない場合は、「Missing」というテキストが表示されます。最初に利用可能な画像があるかどうかをテストしてから、テストでtrueが返された場合は、上記のタグをレンダリングします。

さらに良いことに、画像が特に提供されていない場合、デフォルトの画像を指定する方法はありますか?

39
neezer

以下を使用して、モデルにアタッチメントが関連付けられているかどうかを確認します。

<% if @agent.avatar.file? %>
  <%= image_tag @agent.avatar.url(:normal) %>
<% else %>
  No attachment available!
<% end %>
60

アバターに複数のサイズがある場合:

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'
53
Voldy

さて、私はそれの一部を手に入れました。

デフォルトの画像の指定はモデルで行われます

has_attached_file :avatar, :default_url => '/images/brokers/agents/anonymous_icon.jpg'
31
neezer

数バイト少ない:

<% if @agent.avatar? %>
  <%= image_tag @agent.avatar.url(:normal) %>
<% else %>
  No attachment available!
<% end %>
18
tig

条件よりも:default_urlを使用することをお勧めします。

3
ashisrai_

モデルでdefault_urlが指定されている場合、存在するメソッドを使用できますか? URLがデフォルトであるか、アップロードされたものであるかを確認します。

<% if @agent.avatar.present? %>
  <%= image_tag @agent.avatar.url(:normal) %>
<% else %>
  No attachment available!
<% end %>
1
user1647055

あなたはこれを使うことができます

user.photo.exists?(:medium).
0
stopanko

以前も同じ問題がありましたが、次を使用して解決しました。

<% if @post.image.exists? %>
<%= image_tag @post.image.url %>
<% end %>
0
Nami