如何在seeds.rb 中添加图片路径?
Posted
技术标签:
【中文标题】如何在seeds.rb 中添加图片路径?【英文标题】:how to add image path in seeds.rb? 【发布时间】:2021-12-14 12:49:56 【问题描述】:我需要在我的seeds.rb 中添加一个图像路径。我所有的图片都在资产/图片/课程中 我不明白如何在种子.rb 中正确地将图像路径添加到我的课程中
Course.create!(
name: "Art",
description: "In this beginner's art class learners will meet to create nature inspired artwork!
Perfect class for Pre-Kindergarten, Kindergarten, 1st grade & 2nd grade artists
(UK: Reception, Year 1, Year 2, Year 3)- with science & a touch of geography.",
tags: "#art #image #kids",
ages: "4 - 13",
minsize: 4,
maxsize: 7,
duration: 45,
price: 10,
image_url: "images/courses/art1.jpg",
)
【问题讨论】:
我认为问题不在于seeds.rb
文件,而在于您访问该 URL 的视图。
【参考方案1】:
如果您只需要保存该图像的相对路径以便稍后在您的视图中呈现它,您可以使用 image_path
方法从 rails assets 文件夹中提取该图像
seeds.rb 不会自动加载这些帮助程序,因此您需要像这样从 ActionController::Base 类中引用它以使其工作:
ActionController::Base.helpers.image_path('courses/art1.jpg')
所以在你的例子中你需要这样写:
Course.create!(
name: "Art",
description: "In this beginner's art class learners will meet to create nature inspired artwork!
Perfect class for Pre-Kindergarten, Kindergarten, 1st grade & 2nd grade artists
(UK: Reception, Year 1, Year 2, Year 3)- with science & a touch of geography.",
tags: "#art #image #kids",
ages: "4 - 13",
minsize: 4,
maxsize: 7,
duration: 45,
price: 10,
image_url: ActionController::Base.helpers.image_path('courses/art1.jpg')
)
无关但可能有用的信息
如果您在某个时候更改课程模型以支持图像上传,那么您会发现拥有文件的实际 FilePath 很方便,因此您可以将其用作种子代码中的文件:
Rails.root.join('app', 'assets', 'images', 'pic1.jpg')
Rails.root
将返回一个 Pathname,其中包含您的 rails 项目的绝对路径。
join
方法可以接受任意数量的参数,并将它们附加到路径名以创建新路径。
路径名对于文件方法和图像上传实现很有用
【讨论】:
以上是关于如何在seeds.rb 中添加图片路径?的主要内容,如果未能解决你的问题,请参考以下文章