我使用paperclip上传用户头像。图像正确存储在/ public目录中。但是我无法弄清楚如何显示图像。我使用:url和:path设置玩了大约一个小时,并且不能以图像将在浏览器中显示的方式匹配它们。 在GET请求路径中总有一个' images / localhost' ,我无法摆脱它。 这是我的代码:
user.rb
class User < ActiveRecord::Base
has_attached_file :avatar, :styles => { :medium => "300x300>", :thumb => "100x100>" }, :default_url => "missing.png",
:url => ':class/:id/:style.:extension',
:path => ':url'
validates_attachment_content_type :avatar, :content_type => /\Aimage\/.*\Z/
end
请求查找的html-tag中的路径如下所示:
<img alt="Original" src="/images/localhost/users/1/original.png?1405249849" />
返回图像的正确请求将是
http://localhost:3000/users/1/original.png?1405248482.
如何让请求与正确的文件系统路径匹配。或者:我的设置有什么问题?
我没有更改application.rb或development.rb
祝你好运, 千电子伏
答案 0 :(得分:0)
你应该尽可能地使用paperclip
的网址或路径助手。所以要显示图像使用:
<%= image_tag @user.avatar.url(:medium) %>
然后: 图片网址不是文件系统路径。根据您在回形针中使用的存储空间,图像可以位于不同的位置,请参阅回形针宝石的understanding storage。
如果您使用文件存储,则文件存储在某处,如
public/system/users/avatar/000/000/013/small/my_pic.png
答案 1 :(得分:0)
<强>时间戳强>
您所看到的是Paperclip's timestamp - 上次更新文件/对象的时间。
虽然我找不到这个号码的任何官方参考,但它基本上允许您确定您正在处理的文件。根据上面提到的问题,如果你想确保你的访问者看到文件的最新版本(IE永远不会存储在cache
)
我不确定为什么存储的图像和存储图像之间存在差异?你的道路。但是,我会说道路是正确的;你只需要能够
-
底线 - 如果您的图片显示在页面上,我认为您的路径不存在任何系统性问题;如果它没有显示在页面上,你能提供错误的日志/参考吗?
答案 2 :(得分:0)
这篇指向https://stackoverflow.com/a/26222093/1949363的帖子http://www.bwigg.com/2009/10/paperclip-customizing-paths-and-urls/是我的答案。我只在我的测试环境中遇到问题,但我相信修复程序也适用于其他环境。
尝试以下设置:
:path => "public/system/:class/:id/:filename",
:url => "/system/:class/:id/:basename.:extension"