【问题标题】:Paperclip not showing image even though URL/images in correct places即使 URL/图像在正确的位置,回形针也不显示图像
【发布时间】:2015-07-10 19:15:29
【问题描述】:

使用 Paperclip 将头像附加到我的 rails 应用程序的用户配置文件。我按照回形针 github 上的说明初始化并附加到我的应用程序。

我在 public/images/medium/missing.png 中有一张图片,对于这两种情况(当我上传或回退到默认值时)我都没有得到图片。我检查了我的目录,有一张图片说它正在寻找但没有抓取它。此外,当我尝试上传图像时,我知道图像已正确上传,因为在 rails 控制台中调用用户时会显示正确附加的所有信息。

我在我的视图中调用图像:

<%= image_tag(@blog.user.avatar.url(":medium"), :class => "image-circle avatar") %>

我在 User 模型中的 Paperclip 声明如下所示:

has_attached_file :avatar, :styles => { :medium => "300x300>", :thumb => "100x100#"}, :default_url => "/public/images/:style/missing.png"
validates_attachment_content_type :avatar, :content_type => /\Aimage\/.*\Z/

真的不知道发生了什么。当我检查不正确加载的图像时出现的路由错误直接指向我本地服务器中的图像。而且它无法抓取丢失或上传的文件这一事实也让我不知所措。任何帮助将不胜感激!

当我使用上传的头像检查用户时,为了更好地衡量输出:

avatar_file_name: "11390219_10206114805925816_6595348111261743639_n.j...", avatar_content_type: "image/jpeg", avatar_file_size: 101926, avatar_updated_at: "2015-07-10 18:51:44"> 

提前致谢!

编辑

这是提供 404 错误的 URL:

http://localhost:3000/images/medium/missing.png 

在我的本地目录中,它进入“root/public/images/medium/missing.png”

不确定它是如何不抓住它的,除非我只是在某处遗漏了一些非常明显的东西。 (我也尝试过将公众路由到那里,但无济于事)。

【问题讨论】:

  • 图片助手生成的网址是什么?您可以将 url 直接粘贴到浏览器中,然后查看您遇到的错误类型。错误是404吗?如果是这种情况,那么您的网址无效。
  • 当我复制 url 时说没有这样的路由,但是在检查元素时它是 404 错误.. 不知道我应该如何修复 URL。
  • 仍然坚持这一点,即使只是试图让它抓住“失踪”在本地主机上也不起作用。我在 public/images/medium/missing.png 中有图像和上面规定的路线,但仍然没有运气。

标签: ruby-on-rails image paperclip


【解决方案1】:

编辑

您可能根本没有提供静态资产,请补充:

config.serve_static_assets = true

到你的 development.rb

原帖

在您的 application.rb(或特定于环境的文件)中,您应该有一个 config.paperclip_defaults = { ... },这是文档中的链接:https://github.com/thoughtbot/paperclip#defaults

这是一个使用雾的示例:

config.paperclip_defaults = {
  :storage => :fog,
  :fog_credentials => {
    :provider => "Local",
    :local_root => "#{Rails.root}/public"
  },
  :fog_directory => "",
  :fog_host => "localhost:3000"
}

您的应用程序中有类似的东西吗?我刚刚在我的一个应用程序上进行了测试,我能够上传一张图片,但是如果没有 paperclip_defaults 哈希,我就看不到任何图片。此外,不要忘记在更新配置文件后重新启动您的应用程序。我希望这会有所帮助!

【讨论】:

  • 我尝试了示例默认值,但它不起作用,我会尝试弄乱选项等。但我理解覆盖默认值更适合需要将图像存储在单独服务上的情况,因此不必为每个 has_attachment 属性指定存储。除非这决定了它应该在哪里寻找?因为我一直在生成与本地服务器上图像位置一致的 url,但是如果我直接输入 url,我什至无法访问公用文件夹。谢谢你的建议!我会更多地研究默认值。
  • 也许这太明显了,但是你的 development.rb 中有 config.serve_static_assets = true 吗?
  • 天哪,就是这样,我已经查看了该文件至少 50 次,只是没有注册它。非常感谢!!!!有时最明显的事情..
  • 另外,您可能需要指定 :path 选项;我不知道您使用的是什么类型的存储,但文档的这一部分可能会有所帮助link 这可以解释 404 错误。
【解决方案2】:

您是否尝试过取消图像样式周围的引号?大约:中?

<%= image_tag(@blog.user.avatar.url(:medium), :class => "image-circle avatar") %>

如 Paperclip Docs 中所示: https://github.com/thoughtbot/paperclip#show-view

【讨论】:

  • 糟糕!没想到我是这样发的。是的,我只是在尝试各种事情,我已经尝试过没有引号但仍然没有运气。
  • 尝试在 :default_url 中不包含“/public”...这将是获取默认图像的开始。另外,您可以发布您的 config.paperclip_defaults = { ... } 吗?
  • 刚刚试了还是不行,东西一直找不到。至于默认的hash,我没有修改。但现在我看起来似乎找不到它。如果我没有更改它,它应该在安装过程中出现在某个地方吗?
【解决方案3】:

同样的问题,通过brew重新安装imagemagic解决了

详细信息:如果您是 imagemagic,请尝试更新 imagemagic,如果它要求您链接它, 试试这个:

 brew link --overwrite imagemagick

它对我有用。希望对你有帮助

【讨论】:

    猜你喜欢
    • 2023-03-12
    • 2021-06-09
    • 2014-11-14
    • 1970-01-01
    • 1970-01-01
    • 2020-06-10
    • 1970-01-01
    • 1970-01-01
    • 2019-07-15
    相关资源
    最近更新 更多