在 ruby on rails 上重命名上传文件
Posted
技术标签:
【中文标题】在 ruby on rails 上重命名上传文件【英文标题】:Rename an upload file on ruby on rails 【发布时间】:2021-12-24 19:46:12 【问题描述】:我是 ruby on rails 的新手,我想更改我上传的图像的名称 谢谢
resized_image = MiniMagick::Image.read(picture.image.download)
resized_image = resized_image.combine_options do |b|
b.resize '2760>'
b.quality '80'
end
v_filename = picture.image.filename
v_content_type = picture.image.content_type
picture.image.purge
picture.image.attach(io: File.open(resized_image.path), filename: v_filename, content_type: v_content_type)
end```
【问题讨论】:
您尝试过更改v_filename = "new_name.jpeg"
吗?
是的,它可以工作,但如果我希望它是动态的,例如用下划线替换空格它将不起作用
动态是什么意思?动态部分来自哪里,模型?
@elmd00 您可以简单地更改 v_filename
值,然后再将其传递给 picture.image.attach
@Chandan 如果我使用像 gsub 这样的方法,我会得到一个错误,比如“这不是一个公认的方法”
【参考方案1】:
由于@elmd00 在评论中提到picture.image.filename
属于ActiveStorage::Filename
类,所以gsub
无法解决问题,我们需要先使用to_s
方法将其转换为字符串,然后我们可以使用gsub
将空格( )
替换为下划线(_)
。
v_filename = v_filename.to_s.gsub(" ", "_")
【讨论】:
以上是关于在 ruby on rails 上重命名上传文件的主要内容,如果未能解决你的问题,请参考以下文章
在控制器中找不到命名空间内的 Ruby on Rails 模型