2

Rails 3.2 と Paperclip 3.4.2 を使用。私は次のものを持っています:

# photo.rb
  has_attached_file :data,
    :styles => {
      :picture_lightbox => ["600x450>", :jpg], 
      :picture_preview => ["250x250^", :jpg], 
      :picture_thumb => ["76x76^", :jpg]
    },
    :default_url => "placeholder_:style.png"

# shop.rb
has_many :photos

# show.html.erb
<% if !shop.photos.blank? %>
  <%= image_tag(shop.photos[0].data.url(:picture_thumb)) %>
<% else %>
  <%= image_tag('placeholder_picture_thumb.png') %>
<% end %>

これは機能しますが、(写真オブジェクトの配列である)が空白のときにデフォルトの画像を表示する方法がわからないため、で指定する目的を:default_url無効にします。photo.rbshop.photos

これはアセット パイプラインに関するものではありません。これは、空白であることをどのように検出できるかについてでshop.photosあり、デフォルトの画像 URL を明示的に指定する代わりに、デフォルトの画像 URL を返します。何を変更すればよいですか?

4

2 に答える 2

2

:default_urlあなたの場合の on Paperclipの目的は、photoオブジェクトのデフォルトの URL を設定することです。しかし、 のデフォルトの「カバー写真」を表示することに問題がありますshop。これは、コード内の追加のロジックです。:default_urlこれは Paperclip のオプションだけでは実現できません。オプションを利用したい場合は、次のような:default_urlメソッドを作成することをお勧めします。shop.rb

def cover_url
  # I guess you want to use first photo based on your code
  photos.first_or_initialize.data.url(:picture_thumb)
end

次に、あなたの見解では、あなたはただ持っているでしょう<%= image_tag(shop.cover_url) %>

于 2013-09-05T09:13:27.403 に答える
-1

実際には、次のような関係がある場合、デフォルトの URL が機能します。

class User
has_attached_file :photo
end

user.photo が nil の場合、デフォルトの user.photo.url はデフォルトの URL を返します。

あなたのケースであなたがしたことは私には正しいようです。

于 2013-09-05T09:16:06.920 に答える