如何在rails中获取assets文件夹的绝对路径?

时间:2014-06-17 02:23:54

标签: ruby-on-rails ruby ruby-on-rails-3

我需要修改Controller中资产中的图像。

def Test
   picpath=ActionController::Base.helpers.asset_path("images/1.jpg")
   file=open(picpath)
   ....
end

但picpath是生产环境中的相对路径(“/assets/images/1-232434.jpg”)。

我需要图像的绝对路径。

问题是资产路径是生产环境中的公共/资产,但资产路径是开发环境中的app / assets。

如何获取图像的绝对路径以便我可以操作图像?

2 个答案:

答案 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"