Ruby on rails 如何在rails中获取资产文件夹的绝对路径?
我需要修改控制器中资源中的图像Ruby on rails 如何在rails中获取资产文件夹的绝对路径?,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,我需要修改控制器中资源中的图像 def Test picpath=ActionController::Base.helpers.asset_path("images/1.jpg") file=open(picpath) .... end 但是picpath是生产环境中的相对路径(“/assets/images/1-232434.jpg”) 我需要图像的绝对路径 问题是,在produciton环境中,资产路径是public/assets,而在开发环境中,资产路径是app/ass
def Test
picpath=ActionController::Base.helpers.asset_path("images/1.jpg")
file=open(picpath)
....
end
但是picpath是生产环境中的相对路径(“/assets/images/1-232434.jpg”)
我需要图像的绝对路径
问题是,在produciton环境中,资产路径是public/assets,而在开发环境中,资产路径是app/assets
如何获得图像的绝对路径,以便操作图像?资产文件夹取决于您所说的环境,因此在这两种情况下都可以获得正确的文件夹 例如,如果您将图片作为附件,我建议您使用以下内容。 如果你必须上传图片,你可以使用例如
如果您需要自定义解决方案,我会将图片存储在公用文件夹的子文件夹中,如public/custompics。在这种情况下,您可以通过相对路径/custompics/1.jpg访问图片 当您在ROR中使用
资产
时,您基本上拥有一个允许您从资产管道调用资源
如评论中所述,您的资产管道
(&随附助手)的创建方式可以帮助您在需要时加载所需的文件(无论是在资产/…
文件夹中还是在公共/资产
文件夹中)
要访问资产或图像,无论它们在哪个文件夹中,或者如果它们在哪个文件夹中,您都可以使用或成功加载它们:
asset\u路径“path/to/asset”
--
图像
正如在另一个答案中所述,您最好使用类似的工具来帮助管理图像上载
如果您允许用户上传图像,则像曲别针这样的系统将允许您将他们上传的图像组织到数据库中,然后通过ActiveRecord调用图像:
#app/controllers/images_controller.rb
Class ImagesController < ApplicationController
def index
@images = Image.all
end
end
#app/views/images/index.html.erb
<% @images.each do |image| %>
<%= image_tag image.attachment.url #=> reference to Paperclip %>
<% end %>
#app/controllers/images_controller.rb
类ImagesController<应用程序控制器
def索引
@images=Image.all
结束
结束
#app/views/images/index.html.erb
回形针参考%>
这不是assets文件夹的用途;它是为静态资产服务的。除了为它们服务之外,你不应该对其中的图像做任何事情。像用户上传的缩略图之类的东西不会放在assets目录中。如果我想更改图像,我应该把它们放在哪个目录中?我只想修改一些图片,并将它们显示到其他目录中在网站上如果你想修改图像,你应该手工修改,并将静态图像放在assets目录下。但是我需要assets文件夹的绝对路径,我如何才能在生产环境中获得路径,谢谢!你不需要。将图像放在另一个目录下,在public
之外。如果需要,我应该将图像放在哪个目录下我想更改它们?我只想修改一些图片并在网站上显示它们如果这些图片与活动记录相关,我真的建议你看看像回形针之类的东西。我无法想象你所问的内容的上下文(也许我们需要更多信息)但如果我理解正确,您希望编辑一些静态图片并将其保存回原始文件夹(覆盖原始文件).我说的对吗?那样的话,你为什么不把它们保存回picpath?picpath是什么,取决于环境,这是正确的。我的上下文是:像1.jpg这样的图片,用户修改1.jpg,然后他会得到2.jpg,然后这个2.jpg应该显示在网站上,2.jpg只有这个用户才能访问。在这种情况下,我建议你使用一个子文件夹在公共文件夹中,例如/public/custompics,您可以访问相对路径/custompics/1.jpg上的图片。我编辑了我的答案以包含此内容。但是如果在/public/custompics中,所有用户都将访问图片。我希望只有特殊用户可以访问他们的特殊图片。但是我想直接访问生产环境中的资产文件夹Roment,资产在公共文件夹中。如何在生产环境中获取资产路径?例如Application.config.something?为什么要这样做?这违反了惯例-因此可能会在将来导致问题,除非您有充分的理由支持itI。我认为这会更简单,但现在更困难。那么,这是什么呢问题的核心?我知道你想直接访问资产
文件夹,但为什么?但是如果将图像保存在公共位置,所有用户都可以访问这些图片。