我的 Rails 应用程序位于
/Users/adam/railsapps/my_project
。
图像存储在/Users/adam/gallery/
中。
在我的 Rails 应用程序的数据库中,我存储了有关图像的信息,包括它们的路径。
在我的 Rails 应用程序中,当我这样做时
[![<%= image_tag("/Users/adam/gallery/#{image.filename_path}") %>][1]][1]
现在显示图像。注意 - 上例中图像的路径是正确的。
当我检查日志时,我看到以下内容:
ActionController::RoutingError (No route matches [GET] "/Users/adam/gallery/img_name.jpg"
我也尝试过这个:
<img src="/Users/adam/gallery/<%= image.filename_path %>">
没有运气。
如何解决这个问题?
注意:这是在我的开发环境中。对于生产,我计划将图像存储在一台服务器/服务上,Rails 应用程序在另一台服务器上获取并显示它们。
问题似乎在于 Rails 路由器正在尝试查找您添加的路径。但是不是内部 Rails 路径。因此,可能您必须在 url 的开头添加 file:/// 才能将其作为文件系统中的绝对 url
<%= image_tag("file:///Users/adam/gallery/#{image.filename_path}") %>
另一方面,我认为您尝试打开项目之外的文件有点奇怪,因此一旦部署项目,它将无法提供图像,我建议您存储项目资产文件夹中的图像或 使用 AWS S3 等其他服务来存储图像