0
class Photo < ActiveRecord::Base
  belongs_to :attachable, :polymorphic => true, :counter_cache => true

  has_attached_file :data,
    :styles => {
      :ppc_full => "500x375>", 
      :ppc_preview => "250x250", 
      :ppc_thumb => "76x76#",
      :default_url => "shop/:style.jpg"
    }
end

class Shop < ActiveRecord::Base
  has_many :photos, :as => :attachable, :dependent => :destroy
end

これを行うとき、写真が関連付けられていない場合は、デフォルトの写真を返したいと考えています。

image_tag(@shop.photos.last.data.url(:ppc_preview))

しかし、代わりに次のエラーが表示されます。

undefined method `data' for nil:NilClass

他にも問題なく動作していますが、これはありません。

4

1 に答える 1

0

ビューヘルパーを使用してこの問題を解決できます。

def show_img_for shop
  unless shop.images.blank?
    image_tag(shop.photos.last.data.url(:ppc_preview))
  else
    image_tag('/path/to/default/img.png', :alt => 'derp')
  end
end

app / helpers / shop_helper.rbでそれを暗示してから、ショップを通過するビューでそれを呼び出すと、トリックが実行されます。モデル関数として追加することもできますが、実際にはビューに関連する問題であるため、ヘルパーが最も適切な解決策である可能性があります。

于 2012-08-19T18:01:36.240 に答える