Rails4 + Paperclip:Url和Path不匹配

时间:2014-07-13 11:21:59

标签: ruby-on-rails ruby image get paperclip

我使用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

祝你好运, 千电子伏

3 个答案:

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