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 回答