CarrierWave default_url不会触发

时间:2013-03-06 05:08:22

标签: ruby-on-rails-3 carrierwave

我很难让这个工作。现在我在我的视图页面上使用了image_tag帮助器。如果没有加载图像,我需要使用Carrierwave的后备而不是抛出错误。

对于我的设置,我使用雾进行存储,我觉得这可能是问题的一部分。

def default_url
  asset_path("fallback/default.jpg")
end

Carrierwave是否只找到未设置的图像?或者是否有一些特殊的方式我应该抓住图像网址才能工作?这就是我现在所拥有的。

<%= image_tag(property.assets.first!.image_url, :width => "200") %>

Asset.rb

require 'file_size_validator'
class Asset < ActiveRecord::Base
  validates :image_url, uniqueness: true
  validates :image_url, allow_blank: true, format: {
      with: %r{\.(gif|jpg|png)$}i,
      message: 'must be a URL for GIF, JPG or PNG image.'
  },
            :file_size => {
                :maximum => 0.5.megabytes.to_i
            }

  attr_accessible :image_url, :property_id
  belongs_to :property
  mount_uploader :image_url, ImageUploader

end

Property.rb

  validates :street_address, :city, :state, :description, :price, :deposit, :beds, :baths, :presence => true
  validates :street_address, :uniqueness => true
  validates :price, :deposit, numericality: {greater_than_or_equal_to: 0.01}

  has_many :assets, :dependent => :destroy

  attr_accessible :street_address, :street_address2, :city, :state, :zip, :country, :description, :price, :beds, :baths,
                  :deposit, :availability, :leased, :sqft, :pets
  attr_accessible :assets_attributes
  accepts_nested_attributes_for :assets, :reject_if => lambda { |p| p[:image_url].blank? }, :allow_destroy => true

1 个答案:

答案 0 :(得分:0)

尝试<%= image_tag(property.assets.first!.image_url.url, :width => "200") %>

假设您在rails控制台中,并且您拥有带图像的资产。虽然Asset.first.image_url看起来像返回类似url的东西(假设你正在使用远程存储),但它实际上不是字符串,它是一个上传器。 Asset.first.image_url.class将返回ImageUploader。要获取网址,您需要添加调用上传者的url方法。