我正在使用carrierwave在我的rails项目中上传图像。这是我的uploader
类。NoMethodError(未定义的方法`id'for nil:NilClass):在CarrierWave模型中
class ProfilePictureUploader < CarrierWave::Uploader::Base
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
end
我在model
使用mount_uploader :avatar , ProfilePictureUploader
是不。相反,我用这个在我的模型
uploader = ProfilePictureUploader.new
uploader.store!(file)
self.image = uploader.url
self.save
但是,这是给我一个错误说
NoMethodError(未定义的方法'身份证”的零:NilClass)
可以理解的model
实例在ProfilePictureUploader
中不可用。所以store_dir
方法不能访问model.id
。我怎样才能得到与此流程类似的目录结构。
这不是this problem的重复。对我而言,uploader
的model
属性不可用。
的可能的复制[Carrierwave:文件哈希和型号ID文件名/店\ _dir(http://stackoverflow.com/问题/ 18460686/carrierwave-file-hash-and-model-id-in-filename-store-dir) –
This is not a duplicate of this http://stackoverflow.com/questions/18460686/carrierwave-file-hash- and-model-id-in-filename-store-dir。对我而言,上传器的模型属性不可用。 – raj
是的,你是对的。 –