由于找不到回形针照片时的nil方法,默认不显示

时间:2012-08-19 15:56:53

标签: ruby-on-rails

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

我让其他人工作正常,但不是这个。

1 个答案:

答案 0 :(得分: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中的恭维,然后在你的视图中调用它在商店中传递它应该做的伎俩。您也可以将其作为模型函数进行处理,但由于它实际上是与视图相关的问题,因此帮助程序可能是最合适的解决方案。