39

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

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

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

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

4

8 に答える 8

60

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

<% if @agent.avatar.file? %>
  <%= image_tag @agent.avatar.url(:normal) %>
<% else %>
  No attachment available!
<% end %>
于 2008-11-17T23:22:25.700 に答える
53

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

has_attached_file :avatar, 
                  :styles => {:small => '30x30#', :large => '100x100#'}, 
                  :default_url => '/images/missing_:style.png'

Rails 3 の場合:

has_attached_file :avatar, 
                  :styles => {:small => '30x30#', :large => '100x100#'}, 
                  :default_url => '/assets/images/missing_:style.png'
于 2010-11-16T18:36:59.340 に答える
31

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

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

has_attached_file :avatar, :default_url => '/images/brokers/agents/anonymous_icon.jpg'
于 2008-11-17T21:24:17.670 に答える
18

数バイト少ない:

<% if @agent.avatar? %>
  <%= image_tag @agent.avatar.url(:normal) %>
<% else %>
  No attachment available!
<% end %>
于 2010-03-02T14:15:14.020 に答える
3

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

于 2010-11-18T09:44:07.817 に答える
1

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

<% if @agent.avatar.present? %>
  <%= image_tag @agent.avatar.url(:normal) %>
<% else %>
  No attachment available!
<% end %>
于 2014-08-20T10:02:05.627 に答える
0

これを使用できます

user.photo.exists?(:medium).
于 2014-12-19T16:35:59.863 に答える