我需要修改Controller中资产中的图像。
def Test
picpath=ActionController::Base.helpers.asset_path("images/1.jpg")
file=open(picpath)
....
end
但picpath是生产环境中的相对路径(“/assets/images/1-232434.jpg”)。
我需要图像的绝对路径。
问题是资产路径是生产环境中的公共/资产,但资产路径是开发环境中的app / assets。
如何获取图像的绝对路径以便我可以操作图像?
答案 0 :(得分:1)
资产文件夹取决于您所说的环境,因此您可以在两种情况下获得正确的文件夹。
例如,如果您将图片作为附件,我建议使用paperclip之类的内容。 如果您必须上传图片,可以使用carrierwave。
如果您想要自定义解决方案,我会将图片存储在公共文件夹中的子文件夹中,例如public / custompics。在这种情况下,您可以访问相对路径/custompics/1.jpg
中的图片答案 1 :(得分:1)
<强>资产强>
在ROR中使用assets
时,您基本上有一个series of helpers,可让您通过asset pipeline
正如评论中所述,您的asset pipeline
(以及随附的帮助程序)的创建方式可以帮助您在需要时加载所需的文件(无论它们是否在{ {1}}文件夹或assets/...
文件夹
要访问资源或图片,无论他们在哪个文件夹中,或者他们是fingerprinted,您都可以使用asset_path
或{{3成功加载它们:
public/assets
-
图片强>
如其他答案中所述,您最好使用image_path
之类的内容来帮助管理图片上传。
如果您允许用户上传图片,Paperclip等系统将允许您将上传内容整理到数据库中,然后通过ActiveRecord调用图像:
asset_path "path/to/asset"