载波 object.url VS object.image_url
Carrierwave object.url VS object.image_url
在我的 Rails 5 应用程序中,我使用 Carrierwave 上传图像。
我必须使用相同的上传器建模:
account.rb:
mount_uploader :logo, ImageUploader
image.rb:
mount_uploader :image, ImageUploader
这会将文件上传到:
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
现在奇怪的是我可以使用:
@account.logo&.url(:thumb) // works!
@account.logo&.image_url(:thumb) // error!
但在图片模型上(一个产品有很多图片):
@product.images.first&.image_url(:thumb) // works!
@product.images.first&.url(:thumb) // error!
所以在第一种情况下我必须使用 .url 而在第二种情况下我必须使用 .image_url
我不知道为什么...有帮助吗?
实例方法 image_url
是根据传递给 mount_uploader
的列动态定义的,并且只是在该列上调用 url
。定义看起来像这样...
def #{column}_url(*args)
#{column}.url(*args)
end
所以,我怀疑 logo_url
可以在 @account
上工作(虽然我没有测试过)
在我的 Rails 5 应用程序中,我使用 Carrierwave 上传图像。
我必须使用相同的上传器建模:
account.rb:
mount_uploader :logo, ImageUploader
image.rb:
mount_uploader :image, ImageUploader
这会将文件上传到:
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
现在奇怪的是我可以使用:
@account.logo&.url(:thumb) // works!
@account.logo&.image_url(:thumb) // error!
但在图片模型上(一个产品有很多图片):
@product.images.first&.image_url(:thumb) // works!
@product.images.first&.url(:thumb) // error!
所以在第一种情况下我必须使用 .url 而在第二种情况下我必须使用 .image_url
我不知道为什么...有帮助吗?
实例方法 image_url
是根据传递给 mount_uploader
的列动态定义的,并且只是在该列上调用 url
。定义看起来像这样...
def #{column}_url(*args)
#{column}.url(*args)
end
所以,我怀疑 logo_url
可以在 @account
上工作(虽然我没有测试过)