如何解决从文件夹中获取照片时,Rails,活动存储,attach_one照片不起作用
因此,我试图将图片附加到数据库实例,但是我找不到正确的路径语法来从我的images
文件夹中获取它。我在做什么错了?
当我使用以下语法将图像托管在服务器上时,效果很好:
bar1.photo.attach(io: URI.open("https://www.ogsoundfx.com/ogcoding/photo_test/image1.jpg"),filename: 'bar1')
但这不起作用:
bar1.photo.attach(io: File.open('../../app/assets/images/bar1.jpg'),filename: 'bar1')
我的路径错误吗?老实说,我尝试了各种可能的方式,但从未成功。 谢谢!
解决方法
文件路径似乎有问题。
代码上的当前目录是应用程序的根目录,路径中的..
表示其父目录。
考虑您的rails应用程序位于parent_1/parent_2/parent_3/rails-mister-cocktail
下,那么您使用的路径将在parent_1/rails-mister-cocktail/app/assets/images/bar1.jpg
下搜索附件
请从irb中找到以下输出以更好地理解:
2.6.3 :002 > File.expand_path('../../app/assets/images/logo.png')
=> "/Users/mac1/Documents/RubyProjects/app/assets/images/logo.png"
2.6.3 :003 > File.expand_path('app/assets/images/logo.png')
=> "/Users/mac1/Documents/RubyProjects/LiveProject/testapp/app/assets/images/logo.png"
请尝试以下操作:
bar1.photo.attach(io: File.open('app/assets/images/bar1.jpg'),filename: 'bar1')
您还可以读取与Rails应用程序的根目录相关的文件。
File.open(File.join(Rails.root,%w(app assets images bar1.jpg)))
,
您可能想要的是Rails.root
。如您在this api documentation中所见,此方法返回一个 Pathname 对象,该对象处理以/开头的绝对路径(从文件系统的根开始)。
bar1.photo.attach(io: File.open(File.join(Rails.root,'app/assets/images/bar1.jpg')),filename: 'bar1')
这应该可以解决您的问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。