awe*_*khh 3 ruby-on-rails carrierwave
这里已经存在类似的问题Rails + CarrierWave:NoMethodError:nil的未定义方法`name':NilClass但解决方案是修复错字.
我已经在同一个项目中使用Rails和Carrierwave,没有任何问题.有一个简单的AR模型:
class Upload < ActiveRecord::Base
attr_accessible :title, :data_file, :caption
mount_uploader :upload, DataFileUploader
validates :title, :data_file, :presence => true
end
Run Code Online (Sandbox Code Playgroud)
在控制器中,它们像往常一样:
def create
@upload = Upload.new(params[:upload])
if @upload.save
redirect_to new_admin_upload_path, :notice => t("site.successfully_created_resource")
else
render :action => 'new'
end
end
Run Code Online (Sandbox Code Playgroud)
直接前进.提交表单时发生以下错误:
ActiveRecord::StatementInvalid in Admin::UploadsController#create
NoMethodError: undefined method `name' for nil:NilClass: INSERT INTO "uploads" ("caption",
"created_at", "data_file", "title", "updated_at") VALUES (?, ?, ?, ?, ?)
Run Code Online (Sandbox Code Playgroud)
我没有看到错误并且不明白,名称来自何处.当离开mount_uploader:upload,在AR模型中的DataFileUploader时,一切正常.
这有什么不对?
非常感谢!
小智 5
我有完全相同的错误,解决方案是将上传器连接到我的模型中的现有字段.对于您的示例,修复将是从更改
class Upload < ActiveRecord::Base
attr_accessible :title, :data_file, :caption
mount_uploader :upload, DataFileUploader
validates :title, :data_file, :presence => true
end
Run Code Online (Sandbox Code Playgroud)
至
class Upload < ActiveRecord::Base
attr_accessible :title, :data_file, :caption
mount_uploader :data_file, DataFileUploader
validates :title, :data_file, :presence => true
end
Run Code Online (Sandbox Code Playgroud)
如果你在上传模型中有data_file字段但没有上传字段(检查你的db/schema.rb文件会有帮助).