ruby-on-rails - NoMethodError:nil 的未定义方法“body”:NilClass
问题描述
我正在尝试重命名上传的文件,这是我在 image_uploader.rb 上的代码:
def filename
if !cached? && file.present?
new_filename = 'wow.jpg'
new_path = File.join(File.dirname(file.path), new_filename)
new_sf = CarrierWave::SanitizedFile.new(new_path)
cache!(new_sf)
recreate_versions!
new_filename
else
super
end
end
在做的时候
重新创建版本!
我遇到了这个错误:
NoMethodError:nil 的未定义方法“body”:NilClass
解决方案
如果您尝试重命名已上传和存储的文件,可以使用move_to
方法(文档)。
假设您有一个User
安装了 Carrierwave 的模型,用于avatar
. 然后,从 rails 控制台,您可以调用:
User.find(1).avatar.path
=> /path/to/avatar/1/image.jpg
User.find(1).avatar.file.move_to("/path/to/avatar/1/new_image_name.jpg")
User.find(1).avatar.path
=> /path/to/avatar/1/new_image_name.jpg
不需要自定义代码,您的问题应该得到解决。
推荐阅读
- firebase - 在 Firestore 中收听查询结果时记录读取含义
- typescript - 为什么在编写 TypeScript 时,Visual Studio Code 中的括号会变成红色?
- android - 膨胀类 com.google.android.material.bottomnavigation.BottomNavigationView 时出错-
- javascript - 如何避免在 Webpack 中的异步中检查等待
- azure-data-factory - 如何从数据流(Azure 数据工厂)中的 json 源中删除根?
- javascript - 彼此垂直绘制条形图d3.js
- git - 从干净的工作目录执行 git pull 后,文件传递到修改
- python - Cron 不会自动启动
- node.js - 为什么我的方法不能解决间隔调度算法?
- c# - 在 C# 中进行泛型搜索的函数