我的assets/images文件夹中有一个名为test.jpg
的映像。
- 我正在尝试读取控制器中的图像:**
image_path = ActionController::Base.helpers.asset_path("test.jpg")
image_data = File.read(image_path)
出现以下错误:
No such file or directory @ rb_sysopen - /assets/test-80cc818a7ee3f5d3cab23996fb09f4685b38b78258084a1ff23eca1c626646f6.jpg
有什么想法吗?为什么它要把那个代码附加到我的图片网址上?我能去掉它吗?这样它就可以读取原始的图片网址了?
谢谢!
1条答案
按热度按时间lmyy7pcs1#
因此,asset_path基本上返回相对于根域的URL路径-即
"/assets/test-{SHADigest}.jpg"
。这个路径不是
File.read
可以接受的文件系统的路径,因此,在unix系统上,你试图访问/assets/xyz
的文件系统,就像/home/xyz
-path一样。您可以做的是从文件系统或原始文件中读取(忽略资产管道可能设置或未设置的任何操作)
或者,您可以使用任何HTTP客户端工具(RestClient、Net::HTTP或类似工具)从它自己的Web服务器读取,并使用
asset_url
代替asset_path
。这在rails控制台中不起作用,除非服务器“意外”运行,并且可以从运行rails控制台的
config.asset_host
上访问。